gitlab-org--gitlab-foss/lib/gitlab/prometheus/metric_group.rb

34 lines
969 B
Ruby
Raw Normal View History

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
def self.load_groups_from_yaml
additional_metrics_raw.map(&method(:group_from_entry))
end
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])
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