2018-11-20 02:01:13 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-06-06 14:07:33 +00:00
|
|
|
module Gitlab
|
|
|
|
module Prometheus
|
|
|
|
class MetricGroup
|
2017-06-16 12:23:33 +00:00
|
|
|
include ActiveModel::Model
|
2017-05-10 09:25:30 +00:00
|
|
|
|
2017-06-16 12:23:33 +00:00
|
|
|
attr_accessor :name, :priority, :metrics
|
2018-08-31 16:53:50 +00:00
|
|
|
|
2017-06-16 12:23:33 +00:00
|
|
|
validates :name, :priority, :metrics, presence: true
|
2017-05-10 09:25:30 +00:00
|
|
|
|
2018-02-23 17:58:40 +00:00
|
|
|
def self.common_metrics
|
2019-11-15 12:06:12 +00:00
|
|
|
all_groups = ::PrometheusMetricsFinder.new(common: true).execute
|
|
|
|
.group_by(&:group_title)
|
|
|
|
.map do |name, metrics|
|
|
|
|
MetricGroup.new(
|
|
|
|
name: name,
|
|
|
|
priority: metrics.map(&:priority).max,
|
|
|
|
metrics: metrics.map(&:to_query_metric)
|
|
|
|
)
|
|
|
|
end
|
2018-12-21 11:11:58 +00:00
|
|
|
|
|
|
|
all_groups.sort_by(&:priority).reverse
|
2017-06-06 14:07:33 +00:00
|
|
|
end
|
2018-02-23 17:58:40 +00:00
|
|
|
|
|
|
|
# EE only
|
|
|
|
def self.for_project(_)
|
|
|
|
common_metrics
|
|
|
|
end
|
2017-05-10 09:25:30 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2020-04-28 09:09:34 +00:00
|
|
|
|
2021-05-11 21:10:21 +00:00
|
|
|
Gitlab::Prometheus::MetricGroup.prepend_mod_with('Gitlab::Prometheus::MetricGroup')
|