+dsa-nagios-nrpe-config (47) unstable; urgency=low
+
+ * dsa-check-hpacucli: Check transfer speed of disks.
+
+ -- Peter Palfrader <weasel@debian.org> Tue, 22 Jul 2008 23:14:50 +0200
+
dsa-nagios-nrpe-config (46) unstable; urgency=low
* Move apt status update from cron.daily to usr/sbin/dsa-update-apt-status.
echo 'WARNIG: Add these lines to sudoers:'
echo 'nagios ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli controller all show'
echo 'nagios ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli controller slot=0 pd all show'
+ echo 'nagios ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli controller slot=0 pd [0-9]\:[0-9] show'
+ echo 'nagios ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli controller slot=0 pd [0-9]I\:[0-9]\:[0-9] show'
echo 'nagios ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli controller slot=0 show status'
echo
+ elif ! grep '^nagios.*hpacucli.* pd .*:.* show' /etc/sudoers > /dev/null; then
+ echo 'nagios ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli controller slot=0 pd [0-9]\:[0-9] show'
+ echo 'nagios ALL=(ALL) NOPASSWD: /usr/sbin/hpacucli controller slot=0 pd [0-9]I\:[0-9]\:[0-9] show'
fi
fi
for my $slot (sort @controllers) {
my $pds = runcmd("controller slot=$slot pd all show");
+ my @drives;
my $nodrives = 0;
my %status;
for (@$pds) {
} else {
record('UNKNOWN');
};
+ push @drives, $drive;
} else {
die ("Cannot read line '$_' gotten from hpacucli controller slot=$slot pd all show\n");
};
};
+ # Check that all drives have the proper transfer speed.
+ # sometimes stuff breaks and they fall back to 10mb/sec.
+ for my $drive (@drives) {
+ my $type;
+ if ($drive =~ /^[0-9]+:[0-9]+$/) { # scsi drives
+ $type = 'SCSI';
+ } elsif ($drive =~ /^[0-9]+I:[0-9]+:[0-9]+$/) { # SAS
+ $type = 'SAS';
+ } else {
+ # I'm not going to run pass arguments of unknown form to the shell..
+ warn ("Unknown diskdrive ID $drive\n");
+ next;
+ }
+
+ my $pd = runcmd("controller slot=$slot pd $drive show");
+ while (defined $pd->[0] && !($pd->[0] =~ /physicaldrive/)) {
+ shift @$pd;
+ };
+ shift @$pd;
+ my %value;
+ for (@$pd) {
+ if (m/^\s*(.*?):\s*(.*?)\s*$/) {
+ $value{$1} = $2;
+ }
+ }
+
+ my $key;
+ my $expected;
+ if ($type eq 'SCSI') {
+ $key = 'Transfer Speed';
+ $expected = '320 MB/Sec';
+ } elsif ($type eq 'SAS') {
+ $key = 'PHY Transfer Rate';
+ $expected = '3.0GBPS';
+ } else {
+ warn "Should not be here. Do not know what to do with type '$type'\n";
+ next;
+ }
+
+ if (!defined $value{$key}) {
+ record('WARNING');
+ push @{$status{'unknown transfer speed'}}, $drive;
+ } elsif ($value{$key} ne $expected) {
+ record('WARNING');
+ push @{$status{'bad transfer speed'}}, $drive."(".$value{$key}.")";
+ };
+ };
+
if ($nodrives && scalar keys %status > 0) {
push @resultstr, "Slot $slot: have no drives but status results?";
record('UNKNOWN');