Нагіос своїми руками
Є невелика клієнтська мережа на десяток активних пристроїв, які потрібно моніторити на предмет доступності. Піднімати для цього Нагіос/Ісінгу або Заббікс не дуже хотілося, тим більше, що мережа доволі статична. Так народився цей скрипт.
#!/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 хвилин.
У планах ще зробити уникнення повторів про завал хоста, а також сповіщення про його підняття.
Якщо будуть питання, готовий відповісти.
Окрема подяка Скіфу за допомогу зі скриптом.
Залишити відповідь