2017-05-10 05:25:30 -04:00
|
|
|
module Gitlab::Prometheus
|
|
|
|
class MetricGroup
|
|
|
|
attr_reader :priority, :name
|
|
|
|
attr_accessor :metrics
|
|
|
|
|
|
|
|
def initialize(name, priority, metrics = [])
|
|
|
|
@name = name
|
|
|
|
@priority = priority
|
|
|
|
@metrics = metrics
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.all
|
|
|
|
load_groups_from_yaml
|
|
|
|
end
|
|
|
|
|
2017-05-25 08:01:10 -04:00
|
|
|
def self.load_groups_from_yaml
|
|
|
|
additional_metrics_raw.map(&method(:group_from_entry))
|
|
|
|
end
|
|
|
|
|
2017-05-10 05:25:30 -04:00
|
|
|
def self.group_from_entry(entry)
|
|
|
|
missing_fields = [:group, :priority, :metrics].select { |key| !entry.has_key?(key) }
|
|
|
|
raise ParsingError.new("entry missing required fields #{missing_fields}") unless missing_fields.empty?
|
|
|
|
|
|
|
|
group = MetricGroup.new(entry[:group], entry[:priority])
|
2017-05-31 13:36:07 -04:00
|
|
|
group.metrics = Metric.metrics_from_list(entry[:metrics])
|
2017-05-10 05:25:30 -04:00
|
|
|
group
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.additional_metrics_raw
|
|
|
|
@additional_metrics_raw ||= YAML.load_file(Rails.root.join('config/additional_metrics.yml'))&.map(&:deep_symbolize_keys).freeze
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|