diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/check_linux_raid.pl | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/contrib/check_linux_raid.pl b/contrib/check_linux_raid.pl index c24b0cd2..73e7fd26 100644 --- a/contrib/check_linux_raid.pl +++ b/contrib/check_linux_raid.pl | |||
@@ -50,6 +50,7 @@ my $code = "UNKNOWN"; | |||
50 | my $msg = ""; | 50 | my $msg = ""; |
51 | my %status; | 51 | my %status; |
52 | my %recovery; | 52 | my %recovery; |
53 | my %resyncing; | ||
53 | my %finish; | 54 | my %finish; |
54 | my %active; | 55 | my %active; |
55 | my %devices; | 56 | my %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.", |