вторник, 5 августа 2014 г.

Solaris 10, IPMI и контроль температуры в серверной

Намедни вводили мы в строй новый сервер. 

Поскольку вешать в маленькую серверную климат-контроль было несуразно, решили для контроля температуры использовать датчики нового сервера, доступные через IPMI.

Ну и хотелось, конечно, получать уведомления о превышении температуры. Дабы вовремя заглянуть. Хотя бы на почту.

Имея в распоряжении IPMI, все сравнительно просто.

1. Настроить форвардером собственный smtp/sendmail Solaris. Как это сделать - миллион раз обсосано.

2. Написать скрипт проверки датчика температуры сервера и отсылки единственного уведомления при превышении этой самой тепрературы:

#!/bin/sh

CC="yourmail@yourdomain"
FLAG="/tmp/check_temp.alert"

alert_level=35

mes_t=`/usr/sbin/ipmitool sensor get "Peripheral Temp" | /bin/grep Reading | /bin/cut -f2 -d":" | /bin/cut -f1 -d"("`

if [ $mes_t -gt $alert_level ]; then
# echo "ALERT: Temperatire above $alert_level!"
if [ ! -f "$FLAG" ]; then
echo "`/bin/date` ALERT! Temperature above $alert_level! Server temperature is $mes_t"| /bin/mailx -s "`/bin/date` Thermal alert" -c $CC staff && echo "Temp $mes_t">$FLAG
exit 1
fi
fi

if [ -f "$FLAG" ]; then
rm "$FLAG"
fi

exit 0


3. Поставить задание в крон, вызывающее оный скрипт с некоторой периодичностью:

# Server thermal control job. Running every 15 minutes
0,15,30,45 * * * * [ -x /usr/local/bin/check_temp ] && /usr/local/bin/check_temp.sh >/dev/null 2>&1


Всего делов.