NAME

Monitoring::Sneck::Checks::cciss - checks HP Smart Array controllers, through cciss_vol_status

VERSION

Version 0.0.1

SYNOPSIS

cciss|perl:cciss
cciss_sg0|perl:cciss -d /dev/sg0
cciss_bsd|perl:cciss -d /dev/ciss0

DESCRIPTION

Checks the logical volumes, physical drives, enclosures, and cache of HP Smart Array controllers, through cciss_vol_status -u -s -V.

- CRITICAL :: A volume FAILED, using interim recovery mode (degraded), with the wrong drive replaced, with a drive not properly connected, overheating, or in a state it does not know. A failed drive, even when a spare has taken over and the volume is OK. A failed spare. A enclosure with a fan, power supply, temperature, or door alert.

- WARNING :: A volume ready for recovery, recovering, expanding, queued for expansion, not yet available, or that was overheated in the past. A spare rebuilding. A drive in S.M.A.R.T. predictive failure. Cache trouble, such as the write cache disabled or a battery problem.

- UNKNOWN :: cciss_vol_status not being there, or saying nothing about a controller.

- OK :: Everything else, including not being a HP, having no controllers, and a controller with no logical drives, such as one used only as a HBA, so the same check can go everywhere.

Without --device, the controllers are found...

- Linux :: If /sys/devices/virtual/dmi/id/sys_vendor says it is a HP, the sg devices of SCSI type 12, RAID controllers, under /sys/class/scsi_generic, for the hpsa driver, and /dev/cciss/c*d0 for the old cciss driver.

- FreeBSD :: /dev/ciss*, as only Smart Arrays have those.

This needs root, to open the devices.

OPTIONS

- -d, --device :: A controller to check, such as /dev/sg0, /dev/cciss/c0d0, or /dev/ciss0, instead of finding them, and without looking at the vendor. May be given more than once.

METHODS

check

Does the check.

controllers

Returns the controllers found, as in the description, such as /dev/sg0 or /dev/ciss0.

controller_status

Runs cciss_vol_status -u -s -V on a controller and returns the code and what to say about it.

my ( $code, $says ) = $check->controller_status( '/usr/bin/cciss_vol_status', '/dev/sg0' );