gitlab-org--gitlab-foss/lib/gitlab/health_checks/prometheus_text_format.rb
Pawel Chojnacki ae8f7666e5 Add prometheus text formatter
+ rename controler method to #index from #metrics
 + remove assertion from nullMetric
2017-06-02 19:45:58 +02:00

38 lines
912 B
Ruby

module Gitlab::HealthChecks
class PrometheusTextFormat
def marshal(metrics)
metrics_with_type_declarations(metrics).join("\n")
end
private
def metrics_with_type_declarations(metrics)
type_declaration_added = {}
metrics.flat_map do |metric|
metric_lines = []
unless type_declaration_added.has_key?(metric.name)
type_declaration_added[metric.name] = true
metric_lines << metric_type_declaration(metric)
end
metric_lines << metric_text(metric)
end
end
def metric_type_declaration(metric)
"# TYPE #{metric.name} gauge"
end
def metric_text(metric)
labels = metric.labels&.map { |key, value| "#{key}=\"#{value}\"" }&.join(',') || ''
if labels.empty?
"#{metric.name} #{metric.value}"
else
"#{metric.name}{#{labels}} #{metric.value}"
end
end
end
end