Set node name as prometheus instance name
And DRY up the recipe so it's easy and expressive to add more metrics/targets
This commit is contained in:
@@ -62,19 +62,27 @@ file "/usr/local/bin/prometheus" do
|
||||
notifies :restart, "service[prometheus]", :delayed
|
||||
end
|
||||
|
||||
node_targets = search(:node, "role:base").map { |n| n["knife_zero"]["host"] }
|
||||
.compact
|
||||
.sort_by { |ip| ip.split(".").map(&:to_i) }
|
||||
.map { |ip| "#{ip}:9100" }
|
||||
|
||||
garage_targets = search(:node, "role:garage_node").map { |n| n["knife_zero"]["host"] }
|
||||
.compact
|
||||
.sort_by { |ip| ip.split(".").map(&:to_i) }
|
||||
.map { |ip| "#{ip}:3903" }
|
||||
|
||||
jobs = node["kosmos_prometheus"]["jobs"].merge(
|
||||
"node" => { "targets" => node_targets },
|
||||
"garage" => { "targets" => garage_targets }
|
||||
{
|
||||
# node exporter
|
||||
"node" => {
|
||||
"query" => "role:base",
|
||||
"port" => 9100
|
||||
},
|
||||
# garage metrics
|
||||
"garage" => {
|
||||
"query" => "role:garage_node",
|
||||
"port" => 3903
|
||||
},
|
||||
}.transform_values do |config|
|
||||
{
|
||||
"targets" => search(:node, config["query"]).map do |n|
|
||||
target = { "target" => "#{n['knife_zero']['host']}:#{config['port']}", "instance" => n.name }
|
||||
target["env"] = n.chef_environment if n.chef_environment
|
||||
target
|
||||
end.compact.sort_by { |t| t["instance"] },
|
||||
}
|
||||
end
|
||||
)
|
||||
|
||||
template "/etc/prometheus/prometheus.yml" do
|
||||
|
||||
Reference in New Issue
Block a user