Project

General

Profile

Download (1.34 KB) Statistics
| Branch: | Tag: | Revision:
desc "Telemetry helper tasks"
namespace :telemetry do
desc "List all metrics"
task :metrics => :environment do
telemetry = Foreman::Telemetry.instance
puts "| Metric name | Labels | Type | Description |"
puts "| ----------- | ------ | ---- | ----------- |"
telemetry.metrics.sort.each do |element|
m_name, m_desc, m_labels, m_type, = element
puts "| #{m_name} | #{m_labels.join(',')} | #{m_type} | #{m_desc} |"
end
end

desc "Generate exporter mapping for statsd_exporter"
task :prometheus_statsd, [:output] => [:environment] do |t|
telemetry = Foreman::Telemetry.instance
File.open(ENV["output"] || "mapping.yaml", "w") do |f|
mappings = []
telemetry.metrics.sort.each do |element|
m_name, m_desc, m_labels, m_type, m_buckets = element
metric = {}
labels = {}
metric["name"] = m_name
metric["match"] = m_name + (".*" * m_labels.count)
m_labels.each_with_index do |label, i|
labels[label.to_s] = "$#{i + 1}"
end
metric["labels"] = labels
metric["help"] = m_desc
metric["buckets"] = m_buckets.dup if m_buckets
metric["timer_type"] = "histogram" if m_type == :histogram
mappings << metric if m_labels.count > 0
end
result = {"mappings" => mappings}
f.puts result.to_yaml
end
end
end
(38-38/41)