diff -r 000000000000 -r 499227bb4392 check_mailq.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/check_mailq.pl Wed Jun 11 08:45:14 2008 +0000 @@ -0,0 +1,98 @@ +#! /usr/bin/perl -w + +use strict; +use File::Basename; +use Getopt::Long; +use lib "/usr/lib/nagios/plugins"; +use utils qw (%ERRORS &print_revision &support); + +sub print_help(); +sub print_usage(); + +my $ME = basename $0; +my ( $opt_w, $opt_c, $opt_s, $opt_V, $opt_h, $opt_b ); +my ( $result, $mailq ); + +$opt_s = "86400"; +$opt_w = "10"; +$opt_c = "20"; +$opt_b = "/usr/sbin/exipick"; + +Getopt::Long::Configure('bundling'); +GetOptions( + "V" => \$opt_V, + "version" => \$opt_V, + "h" => \$opt_h, + "help" => \$opt_h, + "b=s" => \$opt_b, + "binary" => \$opt_b, + "s=i" => \$opt_s, + "seconds" => \$opt_s, + "w=i" => \$opt_w, + "warning=i" => \$opt_w, + "c=i" => \$opt_c, + "critical=i" => \$opt_c +); + +if ($opt_V) { + print_revision( $ME, "0.1" ); + exit $ERRORS{"OK"}; +} + +if ($opt_h) { + print_help(); + exit $ERRORS{"OK"}; +} + +if ( $opt_w > $opt_c ) { + print + "MAILQ CRITICAL: Warning (-w) cannot be greater than Critical (-c)!\n"; + exit $ERRORS{"CRITICAL"}; +} + +# check exipick binary +unless ( -x $opt_b ) { + print "MAILQ CRITICAL: exipick not found or not executable - $opt_b\n"; + exit $ERRORS{"CRITICAL"}; +} + +# check the mailq +`$opt_b -o $opt_s -c` =~ /^(\d+).*/; +$mailq = $1; + +SWITCH: { + $mailq < $opt_w and $result = "OK", last; + $mailq >= $opt_c and $result = "CRITICAL", last; + $mailq >= $opt_w and $result = "WARNING", last; +} + +print +"MAILQ $result: ($mailq) queued mails older than $opt_s sec.|unsent=$mailq;$opt_w;$opt_c;0;0\n"; +exit $ERRORS{$result}; + +sub print_usage() { + print "Usage:\n"; + print " $ME [-b ] [-s ] [-w ] [-c ]\n"; + print " $ME [-h | --help]\n"; + print " $ME [-V | --version]\n"; +} + +sub print_help() { + print_revision( $ME, "0.1" ); + print "Copyright (c) 2008 Christian Arnold\n\n"; + print "This plugin checks the number of messages, which are longer than\n"; + print "an specified time holding in the mail queue.\n\n"; + print_usage(); + print "\n"; + print " -b, --binary \n"; + print " Path of exipick binary (default: /usr/sbin/exipick)\n"; + print " -s, --seconds \n"; + print " Age of messages in seconds in the mail queue (default: 86400) one day\n"; + print " -w, --warning \n"; + print " Min. number of messages in the mail queue to generate warning alert (default: 10)\n"; + print " -c, --critical \n"; + print " Min. number of messages in the mail queue to generate critical alert (default: 20)\n"; + print "\n"; + print "Note: This plugin only works with exim4.\n\n"; + support(); +}