2020-03-13 15:44:24 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Fetches the self monitoring metrics dashboard and formats the output.
|
|
|
|
# Use Gitlab::Metrics::Dashboard::Finder to retrieve dashboards.
|
|
|
|
module Metrics
|
|
|
|
module Dashboard
|
|
|
|
class SelfMonitoringDashboardService < ::Metrics::Dashboard::PredefinedDashboardService
|
|
|
|
DASHBOARD_PATH = 'config/prometheus/self_monitoring_default.yml'
|
2020-10-24 23:57:45 +05:30
|
|
|
DASHBOARD_NAME = N_('Overview')
|
2020-03-13 15:44:24 +05:30
|
|
|
|
2020-07-28 23:09:34 +05:30
|
|
|
# SHA256 hash of dashboard content
|
2020-10-24 23:57:45 +05:30
|
|
|
DASHBOARD_VERSION = '0f7ade2022e09f1a1da8e883cc95d84b9557e1e0e9b015c51eb964296aa73098'
|
2020-07-28 23:09:34 +05:30
|
|
|
|
2020-03-13 15:44:24 +05:30
|
|
|
SEQUENCE = [
|
2020-04-22 19:07:51 +05:30
|
|
|
STAGES::CustomMetricsInserter,
|
2020-07-28 23:09:34 +05:30
|
|
|
STAGES::MetricEndpointInserter,
|
|
|
|
STAGES::VariableEndpointInserter,
|
2020-10-24 23:57:45 +05:30
|
|
|
STAGES::PanelIdsInserter
|
2020-03-13 15:44:24 +05:30
|
|
|
].freeze
|
|
|
|
|
|
|
|
class << self
|
|
|
|
def valid_params?(params)
|
|
|
|
matching_dashboard?(params[:dashboard_path]) || self_monitoring_project?(params)
|
|
|
|
end
|
|
|
|
|
|
|
|
def all_dashboard_paths(_project)
|
|
|
|
[{
|
|
|
|
path: DASHBOARD_PATH,
|
2020-06-23 00:09:42 +05:30
|
|
|
display_name: _(DASHBOARD_NAME),
|
2020-03-13 15:44:24 +05:30
|
|
|
default: true,
|
2020-10-24 23:57:45 +05:30
|
|
|
system_dashboard: true,
|
2020-07-28 23:09:34 +05:30
|
|
|
out_of_the_box_dashboard: out_of_the_box_dashboard?
|
2020-03-13 15:44:24 +05:30
|
|
|
}]
|
|
|
|
end
|
|
|
|
|
|
|
|
def self_monitoring_project?(params)
|
|
|
|
params[:dashboard_path].nil? && params[:environment]&.project&.self_monitoring?
|
|
|
|
end
|
|
|
|
end
|
2020-07-28 23:09:34 +05:30
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def dashboard_version
|
|
|
|
DASHBOARD_VERSION
|
|
|
|
end
|
2020-03-13 15:44:24 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|