]> git.openstreetmap.org Git - chef.git/blob - cookbooks/munin/files/default/plugins/chef_status
Add munin plugin to monitor chef node status
[chef.git] / cookbooks / munin / files / default / plugins / chef_status
1 #!/usr/bin/ruby
2
3 require "json"
4
5 nodes = JSON.parse(IO.popen(["knife", "status", "-c", "/var/lib/chef/.chef/knife.rb", "-F", "json"]).read).sort_by { |node| node["name"] }
6
7 if ARGV[0] == "config"
8   puts "graph_title Chef node status"
9   puts "graph_args --base 1000 --logarithmic"
10   puts "graph_vlabel Time since last checkin"
11   puts "graph_category chef"
12
13   nodes.each do |node|
14     name = node["name"].split(".").first
15
16     puts "#{name}.label #{name}"
17     puts "#{name}.type GAUGE"
18     puts "#{name}.min 0"
19     puts "#{name}.warning 14400"
20     puts "#{name}.critical 43200"
21   end
22 else
23   nodes.each do |node|
24     name = node["name"].split(".").first
25     time = Time.now.to_f - node["ohai_time"]
26
27     puts "#{name}.value #{time}"
28   end
29 end