Мониторинг сайтов на коленке (bash script)


По роду деятельности мне приходится иметь дело с большим количеством сайтов. В виду специфики проектов приходится некоторое время следить за доступностью вэб ресурсов после окончания проекта.

Пришла мне мысль упростить это дело. Возиться с Nagios или Zabbix, ради такой простой задачи, не хотелось. В итоге получился вот такой вот скрипт, который выполняется на моем компьютере:

#/bin/bash
html=/var/www/servers_state.html
while true
do
    echo "<br><br><br>" > $html
    echo '<center><table width="40%" border="1" cellspacing="0" cellpadding="5" >' >> $html
    echo "<tr><td></td><td><b>HOST</b></td><td><b>State</b></td></tr>" >> $html
    i=1
    serverlist=(website1.com website2.com website3.com website4.com website4.com)
    for web in "${serverlist[@]}"
    do
        state=$(HEAD -t 8 $web |sed -n 1p)
        echo "<tr><td>$i</td><td>$ip</td><td>$state</td></tr>" >> $html
        if [ "$state" != "200 OK" ]
        then
            echo "Something is wrong with $ip" |mail -s "Invalid responce from $web" \ yourmail@domain.com
        fi
    let "i = $i +1"
done
echo "</table>" >> $html
echo "<br>" >> $html
echo "<p>Last updated at $(date +%H:%M:%S)</p>" >> $html
echo "</center>" >> $html
sleep 30
done

Переменная serverlist содержит список сайтов, которые нужно проверять.
Скрипт каждые 30 секунд бросает HEAD запрос каждому сайту из списка serverlist и проверяет код ответа. Вся эта информация записывается в файл servers_state.html. Если код ответа отличается от "200" - скрипт шлет уведомление мне на почту.
В итоге я имею табличку с состоянием сайтов на момент предыдущей прогонки скрипта по адресу

http://localhost/servers_state.html

А в почте имею информацию о недоступности ресурсов с точностью до 30 секунд.

На самом деле схему уведомления я немного упростил. На практике уведомления можно отправлять не на почту, а, скажем, в Skype.

Share Button
(Visited 266 times, 1 visits today)

2 комментария на «“Мониторинг сайтов на коленке (bash script)”»

  1. Правильно… Хотя для этого есть яндекс уведомлялки, хоть они и не так оперативны. А не подскажите столь же простой инструмент для мониторинга — сколько какой сайт потребляет оперативной памяти, процессора? Не хочу использовать громоздкие панели вроде ISP, Vesta и т.п.

    • сколько какой сайт потребляет оперативной памяти, процессора

      Такого инструмента нету потомучто это не так просто мониторить. Потребление памяти и процессора включает в себя выделение памяти в стэке вэб сервера под конкретный запрос к конкретному сайту, а так же использование памяти/процессорного времени самим обработчиком типа рhp, python, и т.д.

      Фишка «громоздких» панелей типа ISP,Vesta в том, что они используются для настройки сервера на основе своих заготовок, поэтому и включают мониторинг ресурсов сайтами. При чем как правило эти метрики считываются только с процесса обработчика. В случае с php-fpm Вам нужно запустить отдельный пул под каждый сайт и дальше мерять кто и сколько потребляет.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *