X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=dsa-nagios-checks%2Fchecks%2Fdsa-check-hpasm;h=0d46c642369502b2ebfddd5b98aa985d5ef31fd8;hb=cf2973bf115ddeb9adb42970d3f01d7d3377f4be;hp=63505f393885f2fb651749ab7da2884d11f82c0b;hpb=3ecc03749909583afb63d28a6ddffbf0117b0700;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-checks/checks/dsa-check-hpasm b/dsa-nagios-checks/checks/dsa-check-hpasm index 63505f3..0d46c64 100755 --- a/dsa-nagios-checks/checks/dsa-check-hpasm +++ b/dsa-nagios-checks/checks/dsa-check-hpasm @@ -2,6 +2,8 @@ use strict; use warnings; +use English; +use Getopt::Long; # check status of various hardware devices (fans, temp, dimms, powersupply) # requires hpasmcli @@ -42,6 +44,24 @@ my %callbacks = ( 'SHOW TEMP' => \&do_temp, ); + +my $params = {}; + +Getopt::Long::config('bundling'); +if (!GetOptions ( + '--help' => \$params->{'help'}, + '--ps-no-redundant' => \$params->{'ps-no-redundant'}, + '--fan-no-redundant' => \$params->{'fan-no-redundant'}, + )) { + die ("$PROGRAM_NAME: Usage: $PROGRAM_NAME [--help] [--ps-no-redundant] [--fan-no-redundant]\n"); +}; +if ($params->{'help'}) { + print "$PROGRAM_NAME: Usage: $PROGRAM_NAME [--help] [--ps-no-redundant] [--fan-no-redundant]\n"; + print "Checks hp hardware health.\n"; + exit (0); +}; + + my $prompt = "hpasmcli>"; my $exit_status = 0; my $ret = ''; @@ -112,6 +132,11 @@ sub do_fans { $num_fans++; my @line = split /\s+/, $line; + if ($line[1] eq 'VIRTUAL') { # blade, etc + $message = 'FAN1: (virtual) OK '; + last; + } + if ($line[2] ne 'Yes') { $message = sprintf("FAN%d: status=%s ", $fan_num, $line[2]); $exit_status |= 2; @@ -120,7 +145,7 @@ sub do_fans { $exit_status |= 1; } elsif ($line[5] ne 'Yes') { $message = sprintf("FAN%d: redundant=%s ",$fan_num, $line[5]); - $exit_status |= 1; + $exit_status |= 1 unless ($params->{'fan-no-redundant'}); } } elsif ($line =~ /($prompt|^\s*$)/) { last; @@ -171,7 +196,7 @@ sub do_powersupply { my $redundant = $1; if ($redundant ne 'Yes') { $message = sprintf("PS%d not redundant ", $ps_num); - $exit_status |= 1; + $exit_status |= 1 unless ($params->{'ps-no-redundant'}); } } elsif ($line =~ /($prompt|^\s*$)/) { last; @@ -217,13 +242,15 @@ sub do_temp { next if ($threshold eq '-'); $num_temp++; - my $off = $threshold - $current_temp; - if ($off <= 0) { - $message = sprintf("TEMP zone=%s %sC/%sC ", $zone, $current_temp, $threshold); - $exit_status |= 2; - } elsif ($off < ($threshold/10)) { - $message = sprintf("TEMP zone=%s %sC/%sC ", $zone, $current_temp, $threshold); - $exit_status |= 1; + if ($current_temp ne '-') { + my $off = $threshold - $current_temp; + if ($off <= 0) { + $message = sprintf("TEMP zone=%s %sC/%sC ", $zone, $current_temp, $threshold); + $exit_status |= 2; + } elsif ($off < ($threshold/10)) { + $message = sprintf("TEMP zone=%s %sC/%sC ", $zone, $current_temp, $threshold); + $exit_status |= 1; + } } } elsif ($line =~ /($prompt|^\s*$)/) { last;