Нагіос своїми руками

Є невелика клієнтська мережа на десяток активних пристроїв, які потрібно моніторити на предмет доступності. Піднімати для цього Нагіос/Ісінгу або Заббікс не дуже хотілося, тим більше, що мережа доволі статична. Так народився цей скрипт.

#!/usr/bin/env bash

function host_is_alive()
{
        true
}

function host_is_dead()
{
        /usr/local/bin/jabber.php "admin@localhost" "ALERT: host $1 ($2) is dead"
}

function checkhost()
{
        case "$3" in
                0)
                        host_is_alive "$1" "$2"
                        ;;
                *)
                        host_is_dead "$1" "$2"
                        ;;
        esac
}

lockfile="/var/run/check_network.lock"

hosts="\
        host1;1.2.3.4;noskip \
        host2;5.6.7.8;skip \
        host3;9.10.11.12;noskip"

if [[ -f "$lockfile" ]]
then
        echo "Lockfile $lockfile exists"
        exit 1
fi

touch "$lockfile"

for host in $hosts
do
        hostname=`echo $host | cut -d ';' -f 1`
        hostip=`echo $host | cut -d ';' -f 2`
        hostskip=`echo $host | cut -d ';' -f 3`
        if [[ "$hostskip" == "noskip" ]]
        then
                ping -c 1 -q -W 1 $hostip >/dev/null 2>&1
                checkhost "$hostname" "$hostip" "$?"
        fi
done

rm -f "$lockfile"

У змінній hosts задається набір хостів, які потрібно моніторити пінгом. Кожний запис складається з назви хоста, IP-адреси й параметра активності. Іноді певні хости вимикаються, і щоб не створювати алярми на них, пишеться skip. Якщо хост мертвий, шлеться сповіщення в жаббер, але можна туди вписати будь-що, наприклад, відправлення листа на пошту.

Скрипт запускається через cron. Наприклад, з інтервалом 5 хвилин.

У планах ще зробити уникнення повторів про завал хоста, а також сповіщення про його підняття.

Якщо будуть питання, готовий відповісти.

Окрема подяка Скіфу за допомогу зі скриптом.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.