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

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

#!/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 для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.