Sledování stavu Areca řadiče Nagiosem

Na některých serverech používáme řadiče Areca ARC-1680, pro klidný spánek monitorujeme stav diskových svazků Nagiosem.

 

Pro sledování stavu využíváme utilitu od výrobce, program arecacli:

[root@server ~]#  /usr/local/sbin/arecacli vsf info
  # Name             Raid Name       Level   Capacity Ch/Id/Lun  State
===============================================================================
  1 ARC-1680-VOL#000 RS# Dat1        Raid1+0  750.0GB 00/00/00   Normal
  2 ARC-1680-VOL#001 RS# Dat2        Raid1+0  750.0GB 00/00/01   Normal
  3 ARC-1680-VOL#002 RS# Dat3        Raid1+0 1466.0GB 00/00/02   Normal
  4 ARC-1680-VOL#003 RS# Dat4        Raid6   3750.0GB 00/00/03   Normal
===============================================================================
GuiErrMsg<0x00>: Success.

Program arecacli je třeba spouštět pod vyšším oprávněním, nechtělo se mi měnit práva k zařízení v /dev, tak jsem použil SUDO, zápis v /etc/sudoers:

Cmnd_Alias ARECA = /usr/local/sbin/arecacli
nrpe    ALL= NOPASSWD: ARECA
#!/bin/bash

VOLUMES="1 2 3 4"

STATE_OK=0              # define the exit code if status is OK
STATE_WARNING=1         # define the exit code if status is Warning (not really used)
STATE_CRITICAL=2        # define the exit code if status is Critical
STATE_UNKNOWN=3         # define the exit code if status is Unknown

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

for cmd in arecacli awk sed sudo [
do
 if ! `which ${cmd} 1>/dev/null`
 then
  echo "UNKNOWN: ${cmd} does not exist, please check if command exists and PATH is correct"
  exit ${STATE_UNKNOWN}
 fi
done

RESULT=""
ERROR=0
for volume in $VOLUMES; do
        volstate=$(/usr/bin/sudo /usr/local/sbin/arecacli vsf info vol=${volume} | awk -F: '/Volume\ State/{str=$2; sub("[ \t]*","",str); print str}')
        if [ "${volstate}" != "Normal" ]; then
                ERROR=1
        fi
        RESULT="${RESULT}Vol$volume: ${volstate} "
done

if [ $ERROR -gt 0 ]; then
        echo "ERROR: ${RESULT}"
        exit ${STATE_CRITICAL}
else
        echo "OK: ${RESULT}"
        exit ${STATE_OK}
fi

Arecacli pro kontrolu svazku potřebuje skoro jednu sekundu. U nás celkem pro běh skriptu potřebujeme 4s:

[root@server ~]# time /usr/local/sbin/check_areca
OK: Vol1: Normal Vol2: Normal Vol3: Normal Vol4: Normal

real    0m3.973s
user    0m0.015s
sys     0m0.044s

Zařazení do NRPE je snadné, /etc/nagios/nrpe.cfg:

...
command[check_areca]=/usr/local/sbin/check_areca
...