вторник, 18 февраля 2014 г.

Скрипт для мониторинга состояни системы (для мониторинга Zabbix)

Необходимо постоянно следить за состоянием параметров системы, конечно в крутых инсталляциях для этого используется специальные решения, Но что делать, если вы используете простую материнку и еще более простые жесткие диски? Приходится колхозить свой огород.
Своей версией такого огорода решил поделится с общественностью.

#!/bin/bash

SERVER="HostNode";

/usr/bin/sensors >/tmp/sensors
/usr/sbin/smartctl --all /dev/sda >/tmp/sda_smart
/usr/sbin/smartctl --all /dev/sdb >/tmp/sdb_smart
/usr/sbin/smartctl --all /dev/sdc >/tmp/sdc_smart
/usr/sbin/smartctl --all /dev/sdd >/tmp/sdd_smart
/usr/sbin/smartctl --all /dev/sde >/tmp/sde_smart

A=`cat /tmp/sensors | grep "CPU FAN" | cut -d"R" -f1 | cut -d":" -f2`
echo $SERVER" system.cpu.fan "$A
B=`cat /tmp/sensors | grep "CPU Temp" | cut -d"+" -f2 | cut -d"C" -f1 | sed -e "s/\W*$//g"`
echo $SERVER" system.cpu.temp "$B
C=`cat /tmp/sensors | grep "MB Temp" | cut -d"+" -f2 | cut -d"C" -f1 | sed -e "s/\W*$//g"`
echo $SERVER" system.aux.temp "$C


DRIVES="sda sdb sdc sdd sde"
for drive in $DRIVES ; do
        FILE="/tmp/$drive"
        FILE+="_smart"
        A=`grep Model:  $FILE | cut -d":" -f2 |sed 's/^\s*//g;'`
        echo $SERVER" system.$drive.Model "$A
        A=`grep Temperature_Celsius  $FILE | sed 's/\s\+/ /g;' | cut -d" " -f10`
        echo $SERVER" system.$drive.Temperature_Celsius "$A
        A=`grep Hardware_ECC_Recovered  $FILE | sed 's/\s\+/ /g;' | cut -d" " -f4`
        echo $SERVER" system.$drive.Hardware_ECC_Recovered "$A
        A=`grep Raw_Read_Error_Rate  $FILE | cut -d"x" -f2 | cut -d" " -f4`
        echo $SERVER" system.$drive.Raw_Read_Error_Rate "$A
        A=`grep Raw_Read_Error_Rate  $FILE | sed 's/\s\+/ /g;' | cut -d" " -f11`
        echo $SERVER" system.$drive.Raw_Read_Error_Rate_RAW "$A
        A=`grep Raw_Read_Error_Rate  $FILE | sed 's/\s\+/ /g;' | cut -d" " -f10`
        echo $SERVER" system.$drive.Raw_Read_Error_Rate_WHEN "$A
        A=`grep Power_On_Hours  $FILE |sed 's/\s\+/ /g;' | cut -d" " -f11`
        echo $SERVER" system.$drive.Power_On_Hours "$A
        A=`grep Reallocated_Sector_Ct  $FILE |sed 's/\s\+/ /g;' | cut -d" " -f11`
        echo $SERVER" system.$drive.Reallocated_Sector_Ct "$A
done


Это скрипт для CRON его нужно периодически запускать и отправлять данные в Zabbix с помощью пакетного загрузчика zabbix_sender.

Конечно, все ключи которые передается должны быть добавлены в Items соответствующего сервера, в моем случае он называется HostNode
Диски которыми надо следить перечислены в DRIVES
Конечно же необходимо создать триггеры, чтобы не пропустить печального момента.
Да и на графики надо бы все вывести.


Комментариев нет: