packages: nagios-plugin-check_raid/check_raid - added support for Areca rai...
glen
glen at pld-linux.org
Sat Apr 7 17:20:21 CEST 2012
Author: glen Date: Sat Apr 7 15:20:21 2012 GMT
Module: packages Tag: HEAD
---- Log message:
- added support for Areca raid cards (cli64)
patch by Jeff B. Hallyburton <jeff#bloomip.com>
---- Files affected:
packages/nagios-plugin-check_raid:
check_raid (1.114 -> 1.115)
---- Diffs:
================================================================
Index: packages/nagios-plugin-check_raid/check_raid
diff -u packages/nagios-plugin-check_raid/check_raid:1.114 packages/nagios-plugin-check_raid/check_raid:1.115
--- packages/nagios-plugin-check_raid/check_raid:1.114 Thu Apr 5 11:54:48 2012
+++ packages/nagios-plugin-check_raid/check_raid Sat Apr 7 17:20:15 2012
@@ -44,6 +44,7 @@
# - LSI MegaRaid via lsraid
# - Serveraid IPS via ipssend
# - Solaris software RAID via metastat
+# - Areca SATA RAID Support via cli64
#
# Changes:
# Version 1.1 : IPS; Solaris, AIX, Linux software RAID; megaide
@@ -73,7 +74,7 @@
my $sudo = which('sudo');
my $cat = which('cat');
-# various RAID tools
+# Various RAID tools
my $mpt_status = which('mpt-status');
my $aaccli = which('aaccli');
my $afacli = which('afacli');
@@ -89,6 +90,7 @@
my $cciss_vol_status = which('cciss_vol_status');
my $hpacucli = which('hpacucli');
my $smartctl = which('smartctl');
+my $cli64 = which('cli64');
#####################################################################
sub print_usage () {
@@ -1294,6 +1296,57 @@
$message .= "hpacucli:[".join(', ', @status)."]";
}
+## Areca SATA RAID Support
+sub check_cli64 {
+ my @CMD = ($cli64);
+ unshift(@CMD, $sudo) if $> and $sudo;
+
+ ## Check Array Status
+ my @status;
+ open(my $fh, '-|', @CMD, 'rsf', 'info') or return;
+ while (<$fh>) {
+ my @arraystatus;
+ next unless (my($s) = /^\s\d\s+Raid\sSet\s#\s\d+\s+\d+\s\d+.\d+\w+\s+\d+.\d+\w+\s+\d+.\d+\w+\s+(\w+)\s+/);
+ push(@arraystatus, $s);
+ $status = $ERRORS{CRITICAL} unless $s = /Normal|(R|r)e(B|b)uild/;
+ $status = $ERRORS{WARNING} if $s = /(R|r)e(B|b)uild/;
+ push(@status, "Array Status - " .join(':', @arraystatus));
+ }
+ close $fh;
+
+ ## Check Drive Status
+ open($fh, '-|', @CMD, 'disk', 'info') or return;
+ my @drivestatus;
+ while (<$fh>) {
+ # Adjust the 2 numbers at the end of the next line to exclude slots,
+ # defaults exclude 25-29.
+ # This is necessary because fully excluding empty slots may cause the
+ # plugin to miss a failed drive.
+ next if (/^\s+\d+\s+\d+\s+SLOT\s2[5-9]/);
+
+ next unless (my($drive1, $stat1) = /^\s+\d+\s+\d+\s+SLOT\s(\d+)\s.+\s+\d+\.\d+\w+\s\s(.+)/) || (my($drive2, $stat2) = /^\s+\d+\s+(\d+)\s+\w+\s+\d+.\d\w+\s+(.+)/);
+
+ if (defined($drive1)) {
+ push(@drivestatus, "$drive1:$stat1");
+ } else {
+ push(@drivestatus, "$drive2:$stat2");
+ }
+
+ foreach (@drivestatus) {
+ if (/Raid\sSet\s#\s\d+/) {
+ s/Raid\sSet\s#\s\d+\s+/OK /;
+ }
+ $status = $ERRORS{CRITICAL} unless /OK |HotSpare|(R|r)e(B|b)uild/;
+ }
+ }
+ close $fh;
+
+ push(@status, "(Disk ".join(', ', @drivestatus). ")");
+
+ $message .= '; ' if $message;
+ $message .= "cli64:[".join(', ', @status)."]";
+}
+
# check from /sys if there are any MSA VOLUME's present.
sub sys_have_msa {
for my $file (</sys/block/*/device/model>) {
@@ -1451,6 +1504,8 @@
push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $megacli -PDList -aALL -NoLog\n") if $megacli;
push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $hpacucli controller all show status\n") if $hpacucli;
push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $hpacucli controller * logicaldrive all show\n") if $hpacucli;
+ push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $cli64 rsf info\n") if $cli64;
+ push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $cli64 disk info\n") if $cli64;
foreach my $mr (</proc/mega*/*/raiddrives*>) {
push(@sudo, "CHECK_RAID ALL=(root) NOPASSWD: $cat $mr\n") if -d $mr;
}
@@ -1568,6 +1623,7 @@
check_arcconf if $arcconf;
check_megarc if $megarc;
check_cmdtool2 if $cmdtool2;
+check_cli64 if $cli64;
if ($cciss_vol_status) {
my @cciss_devs = detect_cciss;
================================================================
---- CVS-web:
http://cvs.pld-linux.org/packages/nagios-plugin-check_raid/check_raid?r1=1.114&r2=1.115
More information about the pld-cvs-commit
mailing list