summaryrefslogtreecommitdiff
path: root/files
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2011-01-10 15:35:52 -0500
committerMicah Anderson <micah@riseup.net>2011-01-10 15:35:52 -0500
commit38cad6021d905c893e66eb2fab90e669ccf7087b (patch)
treefa9796ded3919318e4b6b927abf7041713755744 /files
parent7712633da4e8a2accacde65f1197f5b9bd0252b4 (diff)
add a $use_munin variable to give a knob to turn on/off munin graphing.
add two new munin graphs for puppetmaster: one to graph the memory usage of the running puppetmasters; and one to graph the average compile time
Diffstat (limited to 'files')
-rw-r--r--files/munin/puppet_101
1 files changed, 101 insertions, 0 deletions
diff --git a/files/munin/puppet_ b/files/munin/puppet_
new file mode 100644
index 0000000..ed488be
--- /dev/null
+++ b/files/munin/puppet_
@@ -0,0 +1,101 @@
+#!/usr/bin/env ruby
+
+# returns the mem usage of a given process
+def plist(psname)
+ counter = 0
+ %x{ps h -o rss,size,vsize,pcpu -u puppet}.each do |ps|
+ rss,size,vsize,cpu = ps.split
+ counter += 1
+ puts "puppetmasterd_#{counter}.value #{rss}"
+
+ end
+ return
+end
+
+# reports how many clients compiled in the last 5 minutes
+# repotrs how many unique clients compiled since the begining of the day
+# report the average compilation time for all clients in the last 5 minutes.
+def phaselog
+ logfile = ENV['puppet_logfile'] || '/var/log/daemon.log'
+ count,avg,day_count_unique,day_count = 0 ,0 ,0, 0
+ t = Time.now
+ today = t.strftime("^%b ") + " ?" + t.day.to_s
+ hour = today + t.strftime(" %H:")
+ m = t.min.to_i
+ last5m = ""
+ 6.times do |i|
+ last5m += hour
+ last5m += "0" if (m-i) < 10
+ last5m += (m-i).to_s
+ last5m += "|" unless i==5
+ end
+ hosts = Array.new
+ regexp = ".* for (.*) in (.*) seconds"
+
+ File.open(logfile).grep(/#{today}/).grep(/Compiled configuration|Compiled catalog/).each do |line|
+ case line
+ when /#{last5m}/ then
+ if line =~ /#{regexp}/
+ avg += $2.to_f
+ count += 1
+ unless hosts.include?($1)
+ hosts << $1
+ end
+ end
+ when /#{regexp}/ then
+ day_count += 1
+ unless hosts.include?($1)
+ hosts << $1
+ day_count_unique += 1
+ end
+ end
+ end
+ puts "avg_compile.value #{(avg / count).to_s[0..3]}" unless count == 0
+ puts "last5m_count.value #{count}"
+ puts "last24h_unique_count.value #{day_count_unique}"
+end
+
+
+case ARGV[0]
+ when 'config'
+ case $0
+ when /puppetmaster_memory/
+ puts "graph_title puppetmaster memory usage"
+ puts "graph_vlabel memory"
+ # find out how many mongrel process we have - if any
+ File.open('/etc/default/puppetmaster') do |line|
+ @pm_process = line.grep(/PUPPETMASTERS/).to_s.split('=')[1].to_i
+ end
+ if @pm_process > 0
+ @pm_process.times do |i|
+ puts "puppetmasterd_#{i+1}.label puppetmasterd #{i+1}"
+ end
+ else
+ puts "puppetmaster.label puppetmasterd"
+ end
+ when /puppet_clients/
+ puts "graph_title puppet clients usage"
+ puts "graph_vlabel clients"
+ puts "known_clients.label Known Clients"
+ puts "avg_compile.label Average configuration compile"
+ puts "last5m_count.label Clients in the last 5 minutes"
+ puts "last24h_unique_count.label unique clients in the last 24 hours"
+ end
+ puts "graph_category puppet"
+ exit 0
+ when 'autoconf'
+ case $0
+ when /puppet_mem/,/puppet_clients/
+ puts "yes"
+ else
+ puts "no"
+ exit 0
+ end
+ else
+ plist("'ruby /usr/sbin/puppetmasterd'") if $0 =~ /puppet_mem$/
+ if $0 =~ /puppet_clients$/
+ puts "known_clients.value #{Dir.entries('/var/lib/puppet/yaml/facts/').size-2}"
+ phaselog
+ end
+end
+