diff --git a/puppet/files/puppet-check b/puppet/files/puppet-check index 4281eb8..ad8646d 100755 --- a/puppet/files/puppet-check +++ b/puppet/files/puppet-check @@ -1,8 +1,12 @@ #!/usr/bin/env ruby require "puppet" +require "syslog" require "socket" +Syslog.open(File.basename(__FILE__), Syslog::LOG_PID | Syslog::LOG_NDELAY, + Syslog::LOG_DAEMON) + Puppet.parse_config if Puppet.version[/\d+/].to_i >= 2 @@ -13,11 +17,15 @@ else pidname = "puppetd.pid" end -# get pid number for puppet or exit if not found +# get pid number for puppet or warn if not found pidfile = File.join(Puppet.settings.value("rundir"), pidname) begin pid = File.new(pidfile, "r").read.to_i rescue Errno::ENOENT + err = sprintf("puppetd not running on host '%s'\n", Socket.gethostname) + Syslog.info sprintf(err) + print err + Syslog.close exit end @@ -27,16 +35,20 @@ begin # check memory usage and restart if over 256M rss = `ps -o rss -p '#{pid}'`.to_a.last.to_i / 1024 - if rss > 256 - printf("puppetd memory usage too high (%d MB), on host '%s' sending HUP\n", - rss, Socket.gethostname) + if rss > 128 + err = sprintf("puppetd memory usage too high (%d MB), on host '%s' sending HUP\n", + rss, Socket.gethostname) + Syslog.warning err + print err Process.kill("HUP", pid) end # check if deadlock file is too old dlock = Puppet.settings.value("puppetdlockfile") if File.exists?(dlock) and Time.new - File.new(dlock).mtime > 43200 - print "puppetd deadlock file is over 12 hours old, removing it and sending HUP to daemon\n" + err = "puppetd deadlock file is over 12 hours old, removing it and sending HUP to daemon\n" + Syslog.warning err + print err File.unlink(dlock) Process.kill("HUP", pid) end @@ -47,7 +59,10 @@ rescue Errno::ESRCH end # restart -printf("puppetd dead but pid file exists on host '%s', restarting\n", - Socket.gethostname) -system("service puppet start") +err = sprintf("puppetd dead but pid file exists on host '%s', restarting\n", + Socket.gethostname) +Syslog.warning err +system("service puppet start > /dev/null") system(puppetd) if $?.exitstatus == 127 +Syslog.close +