Skip to content

Мониторинг RAID массивов при помощи Zabbix

Есть зоопарк серверов, надо сделать так чтобы при малейшем вздохе со стороны винтов в RAID массивах - Zabbix орал что наступает конец света =)

В двух из них есть RAID на основе Adaptec 5405 + поверх этого сделан софтверный raid при помощи mdadm

В одном - на основе HP Smart Array P410. И еще два сервера, там  просто софтверный рейд mdadm.

Тут напишу то что нашел по поводу мониторинга рейда через заббикс.

  • mdadm
UserParameter=softraid.status,egrep "\[.*_.*\]" /proc/mdstat|wc -l

Если результат больше нуля - кричим.

  • Adaptec 5405 and others
/usr/StorMan/arcconf getconfig 1 ld | grep "Status of logical device" | grep "Optimal" -c

Это показывает сколько логических девайсов в нормальном состоянии.

/usr/StorMan/arcconf getconfig 1 | awk ' /Defunct disk drive count/ { print $6 } '

Это - сколько винтов отвалилось.

UserParameter=hwraid_adaptec_5405.status,sudo /usr/StorMan/arcconf getconfig 1| grep Defunct | cut -d ":" -f 2|sed 's/ //i'

А вот это это нам и надо.

В итоге делаем:

zabbix ALL=NOPASSWD:/usr/StorMan/arcconf getconfig 1

 

UserParameter=hwraid_adaptec_5405.status,/usr/StorMan/arcconf getconfig 1 | awk ' /Defunct disk drive count/ { print $6 } '

Если результат больше нуля - кричим.

 

  • HP Smart Array P410

Тут посложнее =)

Сначала надо дать права заббиксу на запуск hpacucli:

zabbix ALL=NOPASSWD:/usr/sbin/hpacucli ctrl all show status
zabbix ALL=NOPASSWD:/usr/sbin/hpacucli ctrl slot=0 pd all show
#!/bin/sh
# Script to parse and rewrite the hpacucli output so we can feed it to Zabbix.
# [email protected] - 2010-05-13

#set -x
VERSION=0.5

cleanup() {
    if [ -e $clog ]; then
        rm $clog
    fi
}

check_ok() {
    if [ $rawv -eq 1 ]; then
        echo 0
    else
        echo 1
    fi
}

controllerstat() {
    sudo hpacucli ctrl all show status > $clog

    #Check if another hpacucli has been active, sleep and try again
    if [ $(grep -c '^Another' $clog) -eq 1 ]; then
        sleep 10
        controllerstat
        cleanup
        exit
    fi

    constat=1
    chachestat=1
    battstat=1

    #Check Controller overall status
    rawv=$(grep Controller $clog|awk '{print $3}'|grep -c OK)
    constat=$(check_ok)

    #Check Cache Status
    rawv=$(grep Cache $clog|awk '{print $3}'|grep -c OK)
    cachestat=$(check_ok)

    #Check for a battery and it's status if available
    if [ $(grep -c Battery $clog) -eq 0 ]; then
        battstat=0
    else
        rawv=$(grep Battery $clog|awk '{print $3}'|grep -c OK)
        battstat=$(check_ok)
    fi

    #Calculate overall status and return it
    allstat=$(( $constat + $cachestat + $battstat ))
    if [ $allstat -eq '0' ]; then
        echo 0
    else
        echo 1
    fi
}

diskstat() {
    sudo hpacucli ctrl slot=0 pd all show > $clog

    #Check if another hpacucli has been active, sleep and try again
    if [ $(grep -c '^Another' $clog) -eq 1 ]; then
        sleep 10
        diskstat
        cleanup
        exit
    fi

    drivecount=$(grep -c physicaldrive $clog)
    driveok=$(grep -c OK $clog)

    if [ $driveok -eq $drivecount ]; then
        echo 0
    else
        echo 1
    fi
}

### Main script ###
while getopts ":cdh" opt; do
    case $opt in
        c)
        #Create a save tempfile with mktemp
        clog=$(mktemp /var/tmp/clog.XXXXXXXXXXXX)
        controllerstat
        cleanup
        ;;
        d)
        #Create a save tempfile with mktemp
        clog=$(mktemp /var/tmp/clog.XXXXXXXXXXXX)
        diskstat
        cleanup
        ;;
        h)
        echo "HP disk and controller check version $VERSION"
        echo "Usage:"
        echo "-c Outputs controler overall status as 0 or 1"
        echo "-d Outputs disk overall status as 0 or 1"
        echo "-h Print this help"
        echo "Output legend: 0 equals OK, 1 indicates something went wrong"
        exit 1
        ;;
        \?)
        echo "Unknown option: -$OPTARG"
        echo "Try -h to get help"
        exit 1
        ;;
    esac
done

 

Ну а потом добавить

UserParameter=hp.cont,/zabbix/scripts/hpcheck.sh -c
UserParameter=hp.disk,/zabbix/scripts/hpcheck.sh -d

 

Если результат больше нуля - кричим.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

π