Янв 08 2009

Простейший скрипт мониторинга.

Как показывает практика, хороший админ, совсем не тот, кто много бегает и вечно суетится. Хороший админ — тот, кто контролирует ситуацию. Главное средство для этого системы мониторинга. Существует их достаточно, лидерами популярности являются 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

На этом настройка закончена.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть