prometheus-with-blackbox/cron/bin/dump-targets-by-target-type.rb
Eliezer Croitoru c8e9cc2cc9 1
2024-06-18 18:53:38 +03:00

57 lines
1.4 KiB
Ruby
Executable File

#!/usr/bin/env ruby
require "mysql2"
require "json"
target_type = ARGV[0]
client = Mysql2::Client.new(:host => "localhost", :username => "prom", :password => "prom", :database => "registry")
query = "SELECT t.target_id , t.target, tl.label_key,tl.label_value FROM targets t
JOIN targets_lables tl ON t.target_id = tl.target_id
WHERE t.y = 1 AND tl.target_id IN (SELECT t.target_id FROM targets t
JOIN targets_lables tl ON t.target_id = tl.target_id
WHERE t.y = 1 AND tl.label_key = 'target_type' AND tl.label_value = ?);"
statement = client.prepare(query)
targets = {}
results = statement.execute(target_type)
results.each do |row|
if targets[row["target"]].nil?
targets[row["target"]] = {}
case row["label_key"]
when 'target_type'
if row["label_value"] == target_type
targets[row["target"]][row["label_key"]] = row["label_value"]
end
else
targets[row["target"]][row["label_key"]] = row["label_value"]
end
else
case row["label_key"]
when 'target_type'
if row["label_value"] == target_type
targets[row["target"]][row["label_key"]] = row["label_value"]
end
else
targets[row["target"]][row["label_key"]] = row["label_value"]
end
end
end
client.close
def dump_targets(targets)
res = []
targets.each_key do |key|
res << { "targets" => [ key ], "labels" => targets[key] }
end
puts JSON.pretty_generate(res)
end
dump_targets(targets)