summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/check_linux_raid.pl15
1 files changed, 13 insertions, 2 deletions
diff --git a/contrib/check_linux_raid.pl b/contrib/check_linux_raid.pl
index c24b0cd..73e7fd2 100644
--- a/contrib/check_linux_raid.pl
+++ b/contrib/check_linux_raid.pl
@@ -50,6 +50,7 @@ my $code = "UNKNOWN";
50my $msg = ""; 50my $msg = "";
51my %status; 51my %status;
52my %recovery; 52my %recovery;
53my %resyncing;
53my %finish; 54my %finish;
54my %active; 55my %active;
55my %devices; 56my %devices;
@@ -65,6 +66,10 @@ while(defined $nextdev){
65 $recovery{$device} = $1; 66 $recovery{$device} = $1;
66 ($finish{$device}) = /finish=(.*?min)/; 67 ($finish{$device}) = /finish=(.*?min)/;
67 $device=undef; 68 $device=undef;
69 } elsif (/resync =\s+(.*?)\s/) {
70 $resyncing{$device} = $1;
71 ($finish{$device}) = /finish=(.*?min)/;
72 $device=undef;
68 } elsif (/^\s*$/) { 73 } elsif (/^\s*$/) {
69 $device=undef; 74 $device=undef;
70 } 75 }
@@ -95,8 +100,14 @@ foreach my $k (sort keys %devices){
95 $code = max_state($code, "CRITICAL"); 100 $code = max_state($code, "CRITICAL");
96 } 101 }
97 } elsif ($status{$k} =~ /U+/) { 102 } elsif ($status{$k} =~ /U+/) {
98 $msg .= sprintf " %s status=%s.", $devices{$k}, $status{$k}; 103 if (defined $resyncing{$k}) {
99 $code = max_state($code, "OK"); 104 $msg .= sprintf " %s status=%s, resync=%s, finish=%s.",
105 $devices{$k}, $status{$k}, $resyncing{$k}, $finish{$k};
106 $code = max_state($code, "WARNING");
107 } else {
108 $msg .= sprintf " %s status=%s.", $devices{$k}, $status{$k};
109 $code = max_state($code, "OK");
110 }
100 } else { 111 } else {
101 if ($active{$k}) { 112 if ($active{$k}) {
102 $msg .= sprintf " %s active with no status information.", 113 $msg .= sprintf " %s active with no status information.",