From 257284d2e61c21de2708d8e971c128b333ee4b4e Mon Sep 17 00:00:00 2001 From: duboip Date: Wed, 17 Dec 2014 09:39:32 -0500 Subject: [PATCH 1/2] Update check_disks.pl Fix bug with verbose option being always on (the only difference was an extra line feed with verbose on). Fixed name discrepancies in script (name should be check_disks everywhere, but sometimes the last 's' was missing). --- check_disks.pl/check_disks.pl | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/check_disks.pl/check_disks.pl b/check_disks.pl/check_disks.pl index 82725da..523a59a 100755 --- a/check_disks.pl/check_disks.pl +++ b/check_disks.pl/check_disks.pl @@ -4,7 +4,7 @@ =head1 PLUGIN - check_disk.pl : check disks on Unix servers + check_disks.pl : check disks on Unix servers =head1 ENVIRONNEMENT @@ -19,7 +19,7 @@ =head1 SYNOPSIS - ./check_disk.pl [-H ] [-w ] [-c ] [-u ] [-p ] + ./check_disks.pl [-H ] [-w ] [-c ] [-u ] [-p ] [-i ] [-f ] [-h] [-C ] -h | --help : Display this help -w | --warning : % free space to send warning alert (default 10) @@ -44,7 +44,7 @@ -w and -c options allow you to ajust default threshold of all checked fs. Theses values can be overwritten with -C option by specifying a configuration -file. perldoc ckech_disk.pl for more details. +file. perldoc check_disks.pl for more details. If you want to use the NRPE connexion and check remote hosts, you must create a connection without password between your nagios server and the checked host (key exchange). @@ -57,28 +57,28 @@ a connection without password between your nagios server and the checked host All FS will have the same threshold : not verbose mode : - ./check_disk.pl -w 20 -c 10 + ./check_disks.pl -w 20 -c 10 DISKS OK verbose mode : - ./check_disk.pl -w 20 -c 10 -v + ./check_disks.pl -w 20 -c 10 -v DISK OK [/dev/shm 125.1M (100% free)] [/usr 1.1G (56% free)] [/ 357.2M (84% free)] [/var 1.5G (73% free)] [/tmp 989.7M (96% free)] [/home 1.8G (90% free)] ignore some FS : - ./check_disk.pl -i /dev/shm,/tmp,/home -v + ./check_disks.pl -i /dev/shm,/tmp,/home -v DISK OK [/usr 1.1G (56% free)] [/ 357.2M (84% free)] [/var 1.5G (73% free)] Specify different threshold : - ./check_disk.pl -w 20 -c 10 -f /usr:30:25 -i /dev/shm,/tmp,/home -v + ./check_disks.pl -w 20 -c 10 -f /usr:30:25 -i /dev/shm,/tmp,/home -v Specify another unit (K kilo, M Mega, G Giga, T Tera) : - ./check_disk.pl -w 20 -c 10 -f /usr:400M:300M -i /dev/shm,/tmp,/home + ./check_disks.pl -w 20 -c 10 -f /usr:400M:300M -i /dev/shm,/tmp,/home =head2 With a FS config file : - Syntaxe (check_disk.cfg): + Syntaxe (check_disks.cfg): #FS WARN CRIT / 400M 300M @@ -88,12 +88,15 @@ free)] [/var 1.5G (73% free)] [/tmp 989.7M (96% free)] [/home 1.8G (90% free)] FS threshold are read in this configuration file. the -f option will not be used. - ./check_disk.pl -C check_disk.cfg -i /dev/shm,/tmp,/home + ./check_disks.pl -C check_disks.cfg -i /dev/shm,/tmp,/home DISK WARNING [/ 357.2M (84% free)] =head1 HISTORY - $Log: check_disk.pl,v $ + $Log: check_disks.pl,v $ + + Revision 1.11 2014/12/17 09:34:00 duboip + o Fixed bug with verbose option (was always on) Revision 1.10 2013/03/01 14:28:00 tryggvi@ok.is o Added support for inodes @@ -373,7 +376,6 @@ my $ok_disks = ""; # Tests Warn et Crit de tous les fs et creation de l'output foreach my $f (keys %checkdisks) { - if ($opt_v) { $output .= "\n"; } if($checkdisks{$f}->{pfree} < $checkdisks{$f}->{critical}) { $critical_disks .= " " . $f ; $cmp_crit++; @@ -384,6 +386,8 @@ foreach my $f (keys %checkdisks) { } else { $ok_disks .= " " . $f ; } + if ($opt_v) { + $output .= "\n"; } $output .= "[$f " . byte2human($checkdisks{$f}->{free}) . " (" . $checkdisks{$f}->{pfree} . '% free) ;' . "warning=" . $checkdisks{$f}->{warning} . "% " . @@ -391,7 +395,7 @@ foreach my $f (keys %checkdisks) { '] ' ; $output .= "
" if ($opt_html); #$output .= "\n"; - + } # Donnees de Perfs my $perfwarn=$alldisks{$f}->{somme}*((100-$checkdisks{$f}->{warning})/100); $perfwarn = sprintf("%0.f",$perfwarn); From 56a33a19efad5a5ca7464caba15440d0405b5d5d Mon Sep 17 00:00:00 2001 From: duboip Date: Wed, 17 Dec 2014 11:11:20 -0500 Subject: [PATCH 2/2] Update check_disks.pl Fix issue with verbose options. Removed extra spaces in output. Modified script name discrepancies in text. --- check_disks.pl/check_disks.pl | 47 ++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/check_disks.pl/check_disks.pl b/check_disks.pl/check_disks.pl index 523a59a..7586d7f 100755 --- a/check_disks.pl/check_disks.pl +++ b/check_disks.pl/check_disks.pl @@ -62,12 +62,12 @@ a connection without password between your nagios server and the checked host verbose mode : ./check_disks.pl -w 20 -c 10 -v - DISK OK [/dev/shm 125.1M (100% free)] [/usr 1.1G (56% free)] [/ 357.2M (84% + DISKS OK [/dev/shm 125.1M (100% free)] [/usr 1.1G (56% free)] [/ 357.2M (84% free)] [/var 1.5G (73% free)] [/tmp 989.7M (96% free)] [/home 1.8G (90% free)] ignore some FS : ./check_disks.pl -i /dev/shm,/tmp,/home -v - DISK OK [/usr 1.1G (56% free)] [/ 357.2M (84% free)] [/var 1.5G (73% free)] + DISKS OK [/usr 1.1G (56% free)] [/ 357.2M (84% free)] [/var 1.5G (73% free)] Specify different threshold : ./check_disks.pl -w 20 -c 10 -f /usr:30:25 -i /dev/shm,/tmp,/home -v @@ -89,14 +89,15 @@ free)] [/var 1.5G (73% free)] [/tmp 989.7M (96% free)] [/home 1.8G (90% free)] not be used. ./check_disks.pl -C check_disks.cfg -i /dev/shm,/tmp,/home - DISK WARNING [/ 357.2M (84% free)] + DISKS WARNING [/ 357.2M (84% free)] =head1 HISTORY $Log: check_disks.pl,v $ - Revision 1.11 2014/12/17 09:34:00 duboip - o Fixed bug with verbose option (was always on) + Revision 1.11 2014/12/17 11:07:00 duboip + o Fixed bug with verbose option (all mount points were always retured with options off) + o Removed extra spaces in output. Revision 1.10 2013/03/01 14:28:00 tryggvi@ok.is o Added support for inodes @@ -376,26 +377,29 @@ my $ok_disks = ""; # Tests Warn et Crit de tous les fs et creation de l'output foreach my $f (keys %checkdisks) { + my $notok = 0; if($checkdisks{$f}->{pfree} < $checkdisks{$f}->{critical}) { - $critical_disks .= " " . $f ; + $critical_disks = join (' ', $critical_disks, $f) ; $cmp_crit++; - } + $notok = 1; + } elsif ($checkdisks{$f}->{pfree} < $checkdisks{$f}->{warning}) { - $warning_disks .= " " . $f ; + $warning_disks = join (' ', $warning_disks, $f) ; $cmp_warn++; + $notok = 1; } else { - $ok_disks .= " " . $f ; + $ok_disks = join (' ', $ok_disks, $f) ; } - if ($opt_v) { - $output .= "\n"; } - $output .= "[$f " . byte2human($checkdisks{$f}->{free}) . - " (" . $checkdisks{$f}->{pfree} . '% free) ;' . - "warning=" . $checkdisks{$f}->{warning} . "% " . - "critical=" . $checkdisks{$f}->{critical} . "% " . - '] ' ; + if ($notok || $opt_v) { + $output .= "[ $f " . byte2human($checkdisks{$f}->{free}) . + " (" . $checkdisks{$f}->{pfree} . '% free) ;' . + "warning=" . $checkdisks{$f}->{warning} . "% " . + "critical=" . $checkdisks{$f}->{critical} . "% " . + '] ' ; $output .= "
" if ($opt_html); - #$output .= "\n"; + $output .= "\n" if ($opt_v); } + # Donnees de Perfs my $perfwarn=$alldisks{$f}->{somme}*((100-$checkdisks{$f}->{warning})/100); $perfwarn = sprintf("%0.f",$perfwarn); @@ -408,7 +412,6 @@ foreach my $f (keys %checkdisks) { "0;". "$checkdisks{$f}->{somme} "; } - if($cmp_crit > 0) { $retour='CRITICAL'; } elsif ($cmp_warn > 0) { @@ -432,14 +435,18 @@ if (-d $opt_srvperf) { my $host = $cfg->get_host_by_address($opt_H) || $opt_H; open(FP, ">>$opt_srvperf/$host.perfdata") ; - print FP time(),"|$host|disk|DISK $retour $output|$perf_data\n" ; + print FP time(),"|$host|disk|DISKS $retour $output|$perf_data\n" ; close(FP) ; } } # Sortie du plugin : sans donnees de perfs qui sont stockes # dans d'autres fichiers -print "DISK $retour $critical_disks $warning_disks ... $output | $perf_data\n"; +print "DISKS $retour"; +print "$critical_disks" if ( $critical_disks ); +print "$warning_disks" if ( $warning_disks ); +print "\n$output" if ( $output && ( $retour ne 'OK' || $opt_v ) ); +print "| $perf_data\n"; exit $EXIT_CODES{$retour}; ##########################################################################