You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.0 KiB
Perl
60 lines
2.0 KiB
Perl
#!/usr/bin/perl --
|
|
#
|
|
# Copyright 2007 GroundWork Open Source, Inc. (<93>GroundWork<94>) # All rights reserved. This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License version 2 as published # by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along with this # program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, # Fifth Floor, Boston, MA 02110-1301, USA.
|
|
#
|
|
use strict;
|
|
use Getopt::Long;
|
|
my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
|
|
|
|
my $debug = 0;
|
|
my $warn=300; # 300 secs default threshold for warning
|
|
my $crit=900; # 900 secs default threshold for critical
|
|
|
|
my $statprogram = "/usr/local/monitoring/naemon/bin/naemonstats";
|
|
my $naemon_config = "/usr/local/monitoring/etc/naemon/naemon.cfg";
|
|
|
|
my $clps = GetOptions(
|
|
"w|warning=i" => \$warn,
|
|
"c|critical=i" => \$crit,
|
|
);
|
|
|
|
sub nagexit
|
|
{
|
|
my $errlevel = shift;
|
|
my $string = shift;
|
|
|
|
print "$errlevel: $string\n";
|
|
exit $ERRORS{$errlevel};
|
|
}
|
|
|
|
if (! -x $statprogram) {nagexit ('UNKNOWN',"$statprogram not executable");}
|
|
|
|
my ($min,$max,$avg);
|
|
my @lines = `$statprogram -c $naemon_config`;
|
|
foreach my $line (@lines) {
|
|
#print $line;
|
|
chomp $line;
|
|
if ($line =~ /Active Service Latency:\s+\-?([\d\.]+)\s\/\s\-?([\d\.]+)\s\/\s\-?([\d\.]+)/) {
|
|
$min=$1;
|
|
$max=$2;
|
|
$avg=$3;
|
|
}
|
|
}
|
|
|
|
if (!$avg) { nagexit ('UNKNOWN',"Nothing found"); }
|
|
|
|
my $outputstring = "Nagios latency: Min=$min, Max=$max, Avg=$avg | Min=$min;;;; Max=$max;;;; Avg=$avg;$warn;$crit;;";
|
|
|
|
if ($avg > $crit) { nagexit('CRITICAL',$outputstring);}
|
|
if ($avg > $warn) { nagexit('WARNING',$outputstring);}
|
|
|
|
# else everything fine
|
|
nagexit('OK',$outputstring);
|
|
|
|
|
|
|