packages: nagios-plugin-check_raid/check_raid - improved check_mdstat by Ke...

glen glen at pld-linux.org
Thu Apr 8 10:54:45 CEST 2010


Author: glen                         Date: Thu Apr  8 08:54:45 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- improved check_mdstat by Kenneth Stailey <kstailey#yahoo.com>, original one
  failed to test for failed hot spares; all md users should upgrade :)

---- Files affected:
packages/nagios-plugin-check_raid:
   check_raid (1.72 -> 1.73) 

---- Diffs:

================================================================
Index: packages/nagios-plugin-check_raid/check_raid
diff -u packages/nagios-plugin-check_raid/check_raid:1.72 packages/nagios-plugin-check_raid/check_raid:1.73
--- packages/nagios-plugin-check_raid/check_raid:1.72	Wed Mar 31 10:26:33 2010
+++ packages/nagios-plugin-check_raid/check_raid	Thu Apr  8 10:54:40 2010
@@ -135,30 +135,39 @@
 	}
 }
 
-# Linux LVM
+# Linux Multi-Device (md)
 sub check_mdstat {
-	my($n, $f);
-
 	open my $fh, '<', '/proc/mdstat' or return;
 
-	my @status;
+	my ($md, $md_units);
+	my (@status, @failed_disks);
+
 	while (<$fh>) {
-		if (/^(\S+)\s+:/ ) { $n = $1; $f = ''; next; }
-		next if (($f) = /(\S+)\[\d+\]\(F\)/);
-		next unless (my($s) = /\s*.*\[([U_]+)\]/);
-		next unless valid($n);
+		if (/^(\S+)\s+:/) {
+			$md = $1;
+			@failed_disks = $_ =~ m/(\S+)\[\d+\]\(F\)/g;
+			next;
+		}
+		next unless (($md_units) = /^\s+.*\[([U_]+)\]/);
+		next unless valid($md);
 
-		if ($s =~ /_/) {
+		if ($md_units =~ /_/) {
 			$status = $ERRORS{CRITICAL};
-			push(@status, "$n:$f:$s");
+			push(@status, "$md:@failed_disks:$md_units");
+
+		} elsif (scalar @failed_disks > 0) {
+			$status = $ERRORS{WARNING} unless $status;
+			push(@status, "$md:hot-spare failure: @failed_disks:$md_units");
+
 		} else {
-			push(@status, "$n:$s");
+			push(@status, "$md:$md_units");
 		}
 	}
 	close $fh;
 
 	$message .= "md:[".join(', ', @status)."] " if @status;
 }
+
 
 # Linux, software RAID
 sub check_lsraid {
================================================================

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



More information about the pld-cvs-commit mailing list