Скрипт уведомления о высокой нагрузке
Для мониторинга серверов мы используем munin, но тут появилась задача получать уведомления о подскочившей нагрузке без всяких дополнительных сервисов.
В итоге набросал простенький скрипт, который по крону запускается каждые 15 минут.
Логика работы следующая:
Узнаем текущее значение LA. Берем второй значение, которое показывает нагрузку за последние 5 минут. Это позволит избежать срабатываний при резких, но коротких всплесках нагрузки. Если значение больше порогового, то ждем 30 секунд и получаем новое значение LA. Если оно не стало меньше, то получаем список процессов и отправляем уведомление по почте. Можно еще не нужные демоны остановить, чтобы ресурсы поберечь. На телефоне у меня родное приложение Gmail, которое выводит пуш-уведомление при получении такого письма.
#!/bin/bash LOAD=`uptime | grep -o 'load average.*' | cut -c 21-24` if [ $LOAD \> 0.9 ]; then echo "LA more than 0.9! " sleep 30 # LOAD_new=`uptime | grep -o 'load average.*' | cut -c 21-24` if [ "$LOAD" \< "$LOAD_new" ]; then toplist=`top -b -n 1 | head -n 50` echo "LA URGENT \r\n $toplist" | mail -s "URGENT!" "warnign@site.ru" else echo "no panic" fi fi