X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=dsa-nagios-checks%2Fchecks%2Fdsa-check-puppet;fp=dsa-nagios-checks%2Fchecks%2Fdsa-check-puppet;h=332261e8ab649194b0286d4d6e91938ed744b312;hb=42e99da9d896a33803e763c746e9a103183b6b34;hp=0000000000000000000000000000000000000000;hpb=dd1a60aa0efd9914ffce41c495858e5ca20fe600;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-checks/checks/dsa-check-puppet b/dsa-nagios-checks/checks/dsa-check-puppet new file mode 100755 index 0000000..332261e --- /dev/null +++ b/dsa-nagios-checks/checks/dsa-check-puppet @@ -0,0 +1,91 @@ +#!/usr/bin/env ruby + +require 'optparse' + +class CheckPuppet + + VERSION = '0.1' + script_name = File.basename($0) + + # default options + OPTIONS = { + :statefile => "/var/lib/puppet/state/state.yaml", + :interval => 60, + } + + o = OptionParser.new do |o| + o.set_summary_indent(' ') + o.banner = "Usage: #{script_name} [OPTIONS]" + o.define_head "The check_puppet Nagios plug-in checks that the specified " + + "puppet state file is no older than specified interval." + o.separator "" + o.separator "Mandatory arguments to long options are mandatory for " + + "short options too." + + o.on("-s", "--statefile=statefile", String, "The state file", + "Default: #{OPTIONS[:statefile]}") { |OPTIONS[:statefile]| } + o.on("-i", "--interval=value", Integer, + "Default: #{OPTIONS[:interval]} minutes") { |OPTIONS[:interval]| } + + o.separator "" + o.on_tail("-h", "--help", "Show this help message.") do + puts o + exit + end + + o.parse!(ARGV) + end + + def check_state + + # Set variables + curt = Time.now + intv = OPTIONS[:interval] * 60 + + # Check file time + @modt = 0 + begin + @modt = File.mtime("#{OPTIONS[:statefile]}") + rescue + @file = 3 + end + + diff = (curt - @modt).to_i + + @file = 2 + @file = 0 if diff <= intv + + end + + def output_status + + case @file + when 0 + state = "state file status okay updated on " + @modt.strftime("%m/%d/%Y at %H:%M:%S") + when 2 + state = "state file is missing or older than #{OPTIONS[:interval]} minutes" + when 3 + state = "state file status unknown" + end + + case @file + when 0 + status = "OK" + exitcode = 0 + when 2 + status = "CRITICAL" + exitcode = 2 + when 3 + status = "UNKNOWN" + exitcide = 3 + end + + puts "PUPPET " + status + ": " + state + exit(exitcode) + end +end + +cp = CheckPuppet.new +cp.check_state +cp.output_status +