Author: glen                         Date: Fri Sep 11 12:52:47 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- use mpt-status -s for easier parsing (also makes sudo rule more exact)
- check also physical disks in check_mpt

---- Files affected:
packages/nagios-plugin-check_raid:
   check_raid (1.40 -> 1.41) 

---- Diffs:

================================================================
Index: packages/nagios-plugin-check_raid/check_raid
diff -u packages/nagios-plugin-check_raid/check_raid:1.40 
packages/nagios-plugin-check_raid/check_raid:1.41
--- packages/nagios-plugin-check_raid/check_raid:1.40   Fri Sep 11 14:17:58 2009
+++ packages/nagios-plugin-check_raid/check_raid        Fri Sep 11 14:52:42 2009
@@ -299,23 +299,40 @@
                return;
        }
 
+       # status messages pushed here
+       my @status;
+
        my @CMD = $mpt_status;
        unshift(@CMD, $sudo) if $> and $sudo;
 
-       open(my $fh , '-|', @CMD) or return;
+       open(my $fh , '-|', @CMD, '-s') or return;
        while (<$fh>) {
-               next unless (my($dsk, $stat) = 
/vol_id\s*(\d+).*state\s+(\S+),/);
-               next unless valid($dsk);
-               $message .= "mpt:$dsk:$stat ";
-               if (!$status and $stat =~ /INITIAL|INACTIVE|RESYNC/) {
-                       $status = $ERRORS{WARNING};
-               } elsif ($stat =~ /DEGRADED/) {
+               if (my($d, $s) = /^log_id\s*(\d+)\s+(\S+)/) {
+                       next unless valid($d);
+                       if (!$status and $s =~ /INITIAL|INACTIVE|RESYNC/) {
+                               $status = $ERRORS{WARNING};
+                       } elsif ($s =~ /DEGRADED/) {
+                               $status = $ERRORS{CRITICAL};
+                       } elsif (!$status and $s !~ /ONLINE|OPTIMAL/) {
+                               $status = $ERRORS{UNKNOWN};
+                       }
+                       push(@status, "Logical Volume $d:$s");
+                       next;
+               }
+
+               if (my($d, $s) = /^phys_id\s*(\d+)\s+(\S+)/) {
+                       next if ($s eq "ONLINE");
+
+                       # TODO: process other statuses
                        $status = $ERRORS{CRITICAL};
-               } elsif (!$status and $stat !~ /ONLINE|OPTIMAL/) {
-                       $status = $ERRORS{UNKNOWN};
+
+                       push(@status, "Physical Disk $d:$s");
+                       next;
                }
        }
        close $fh;
+
+       $message = "mpt:".join(', ', @status) if @status;
 }
 
 sub check_megaraid {
@@ -563,7 +580,7 @@
        push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $ipssend getconfig 1 
LD\n") if $ipssend;
        push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $aaccli container list 
/full\n") if $aaccli;
        push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $tw_cli info*\n") if 
$tw_cli;
-       push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $mpt_status\n") if 
$mpt_status and -d "/proc/mpt";
+       push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $mpt_status -s\n") if 
$mpt_status and -d "/proc/mpt";
        push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $cat 
/proc/megaide/0/status\n") if -d "/proc/megaide/0";
        push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $cat 
/proc/megaide/1/status\n") if -d "/proc/megaide/1";
        push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $arcconf GETCONFIG 1 *\n") 
if $arcconf;
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/nagios-plugin-check_raid/check_raid?r1=1.40&r2=1.41&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to