packages: nagios-plugin-check_raid/check_raid - added 3ware SATA RAID (chec...
glen
glen at pld-linux.org
Thu Sep 10 17:16:59 CEST 2009
Author: glen Date: Thu Sep 10 15:16:59 2009 GMT
Module: packages Tag: HEAD
---- Log message:
- added 3ware SATA RAID (checked)
---- Files affected:
packages/nagios-plugin-check_raid:
check_raid (1.30 -> 1.31)
---- Diffs:
================================================================
Index: packages/nagios-plugin-check_raid/check_raid
diff -u packages/nagios-plugin-check_raid/check_raid:1.30 packages/nagios-plugin-check_raid/check_raid:1.31
--- packages/nagios-plugin-check_raid/check_raid:1.30 Thu Sep 10 16:51:36 2009
+++ packages/nagios-plugin-check_raid/check_raid Thu Sep 10 17:16:54 2009
@@ -14,7 +14,7 @@
#
# Version 1.1 : IPS; Solaris, AIX, Linux software RAID; megaide
# Version 2.0 : Added megaraid, mpt (serveraid), aacli (serveraid)
-# Version 2.1 : Made script more generic and secure, Added gdth
+# Version 2.1 : Made script more generic and secure, Added gdth, dpt_i2o, 3ware
use strict;
use Getopt::Long;
@@ -28,13 +28,14 @@
my $cat = find_prog('cat');
# various raids
-my $mpt_status = find_prog('mpt-status'); # LSILogic MPT ServeRAID
-my $aaccli = find_prog('aaccli'); # Adaptec ServeRAID
-my $afacli = find_prog('afacli'); # Adaptec AACRAID
-my $lsraid = find_prog('lsraid'); # Linux, software RAID
-my $metastat = find_prog('metastat'); # Solaris, software RAID
-my $lsvg = find_prog('lsvg'); # AIX LVM
-my $ipssend = find_prog('ipssend'); # Serveraid IPS
+my $mpt_status = find_prog('mpt-status'); # LSILogic MPT ServeRAID
+my $aaccli = find_prog('aaccli'); # Adaptec ServeRAID
+my $afacli = find_prog('afacli'); # Adaptec AACRAID
+my $lsraid = find_prog('lsraid'); # Linux, software RAID
+my $metastat = find_prog('metastat'); # Solaris, software RAID
+my $lsvg = find_prog('lsvg'); # AIX LVM
+my $ipssend = find_prog('ipssend'); # Serveraid IPS
+my $tw_cli = find_prog('tw_cli-9xxx') || find_prog('tw_cli'); # 3ware SATA RAID
#####################################################################
sub print_usage () {
@@ -378,6 +379,54 @@
}
}
+# check designed from check_3ware.sh by:
+# Sander Klein <sander [AT] pictura [dash] dp [DOT] nl>
+# http://www.pictura-dp.nl/
+# Version 20070706
+sub check_tw_cli {
+ my @CMD = $tw_cli;
+ unshift(@CMD, $sudo) if $> and $sudo;
+
+ my (@c, $fh);
+ # scan controllers
+ open($fh , '-|', @CMD, 'info') or return;
+ while (<$fh>) {
+ push(@c, $1) if /^(c\d+)/;
+ }
+ close $fh;
+
+ for my $c (@c) {
+ # check each unit on controllers
+ open($fh , '-|', @CMD, 'info', $c, 'unitstatus') or return;
+ while (<$fh>) {
+ next unless (my($u, $s, $p) = /^(u\d+)\s+\S+\s+(\S+)\s+(\S+)/);
+
+ if ($s eq 'OK') {
+ $message .= "3ware:/$c/$u $s ";
+
+ } elsif ($s eq 'REBUILDING') {
+ $status = $ERRORS{WARNING} unless $status;
+ $message .= "3ware:/$c/$u $s $p% ";
+
+ } elsif ($s eq 'DEGRADED') {
+ open(my $fh , '-|', @CMD, 'info', $c, 'drivestatus') or return;
+ my $ds = '';
+ while (<$fh>) {
+ next unless (my($p, $s) = /^(p\d+)\s+(\S+)\s+\Q$u\E/);
+ $ds .= "$p:$s ";
+ }
+ close $fh;
+ $message .= "3ware:/$c/$u $s $ds ";
+ $status = $ERRORS{CRITICAL};
+ } else {
+ $message .= "3ware:/$c/$u $_ ";
+ $status = $ERRORS{UNKNOWN};
+ }
+ }
+ close $fh;
+ }
+}
+
sub find_prog {
my $prog = shift;
@@ -492,16 +541,17 @@
check_gdth if -d "/proc/scsi/gdth"; # Linux Gdth RAID
check_megaide if -d "/proc/megaide"; # MegaIDE RAID controller
-check_mdstat if -f "/proc/mdstat"; # Linux LVM
-check_mpt if $mpt_status and -d "/proc/mpt"; # LSILogic MPT ServeRAID
+check_mdstat if -f "/proc/mdstat"; # Linux LVM
+check_mpt if $mpt_status and -d "/proc/mpt"; # LSILogic MPT ServeRAID
check_dpt_i2o if -d "/proc/scsi/dpt_i2o"; # i2o RAID
check_megaraid if -d "/proc/megaraid"; # MegaRAID
check_aaccli if $aaccli and -d "/proc/scsi/aacraid"; # Adaptec ServeRAID
-check_afacli if $afacli; # Adaptec AACRAID
-check_lsraid if $lsraid; # Linux, software RAID
+check_afacli if $afacli; # Adaptec AACRAID
+check_lsraid if $lsraid; # Linux, software RAID
check_metastat if $metastat; # Solaris, software RAID
-check_vg if $lsvg; # AIX LVM
-check_ips if $ipssend; # Serveraid IPS
+check_vg if $lsvg; # AIX LVM
+check_ips if $ipssend; # Serveraid IPS
+check_tw_cli if $tw_cli; # 3ware SATA RAID
# Can't do megaRAID controller, it needs X and java (yuck)
if( $message ) {
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/nagios-plugin-check_raid/check_raid?r1=1.30&r2=1.31&f=u
More information about the pld-cvs-commit
mailing list