Простейший скрипт мониторинга.
Как показывает практика, хороший админ, совсем не тот, кто много бегает и вечно суетится. Хороший админ – тот, кто контролирует ситуацию. Главное средство для этого системы мониторинга. Существует их достаточно, лидерами популярности являются Zabbix и Nagios. Это основательные системы, проверяющие массу параметров и имеющие удобные конфигурялки, вебинтерфейсы и тд и тп. Но вот что делать, если необходимо просто, с помощью пинга проверять наличие хоста в сети и в случае его недоступности, отправлять уведомление на почту. У меня для этого есть простой скриптик, который я и предоставляю вашему вниманию.
Сначала проведем подготовительные работы. Нужно установить порт /usr/ports/net/fping/.
cd /usr/ports/net/fping/ make install clean
После того, как мы его установили. приступим к созданию скрипта мониторинга. Для этого в любом каталоге, без разницы в каком(я обычно делаю в хоме у rootа), создадим каталог monitor.
mkdir /root/monitor
Это будет базовый каталог мониторилки. Название его значения не имеет, скрипт не привязан к имени каталога. Далее в этом каталоге создадим, подкаталог hosts. Тут имя уже важно.
mkdir /root/monitor/hosts
В этом каталоге мы будем создавать файлы с именем хоста который нужно мониторить. К примеру. если нужно мониторить хост 192.168.0.1, то нам достаточно сделать:
echo 'alive' > /root/monitor/hosts/192.168.0.1
Точно так же можно добавить столько хостов, сколько вам нужно мониторить, не забывайте только, что этот скрипт предназначен для простого мониторинга. Я бы его позиционировал, как скрипт для мониторинга 3-5 хостов, ну максимум 10-ти, дальше уже лучше пользоваться полноценными мониторилками.
А теперь, собственно сам скрипт. Разместим его непосредственно в /root/monitor/. Выглядит он так:
#!/bin/sh FPING="/usr/local/sbin/fping" WRKDIR=`/bin/pwd` DATE=`/bin/date` MAILTO="hilik@hilik.org.ua" for i in `/bin/ls -1 $WRKDIR/hosts` do oldstatus=`cat $WRKDIR/hosts/$i` #echo $oldstatus newstatus=`$FPING $i | /usr/bin/awk '{ print $3 }'` #echo $newstatus if [ $oldstatus != $newstatus ] then { echo "At $DATE host $i change status to $newstatus" | mail -s "Change status $i to $newstatus" $MAILTO echo $newstatus>$WRKDIR/hosts/$i } fi done
Назовем, к примеру monitor.sh. В нем вам, обязательно надо изменить переменную MAILTO, указав ваш собственный емайл и установим на cron. То есть, после того как скрипт сохраним, сделаем его исполняемым и поставим на крон.
chmod +x /root/monitor/monitor.sh
Ставим на крон:
crontab -eИ в открывшемся редакторе внесем такую строку:
* * * * * /root/monitor/monitor.sh
На этом настройка закончена.



