zlmon (ZeroLab Monitor) — Мониторинг доступности серверов

Иногда стоит простая задача отслеживания доступности сервера в сети, но при этом разворачивать полноценные системы мониторинга может оказаться попросту нецелесообразно и долго.

Поэтому я написал небольшой shell-скрипт, решающий исключительно эту узкую задачу – zlmon (ZeroLab Monitor).

zlmon.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash

# --------------------------------------------
# zlmon (ZeroLab Monitor):
# Written by ZeroChaos
# Version 1.0, 2015-02-17
# Site: https://zerolab.net/
# --------------------------------------------

DIR=$(dirname "$0")
HOSTLIST=$DIR/hostlist.txt
SUBJECT="Alert: Host down!"
EMAIL="e@mail.net"

while read ADDRESS; do
    if [ ! -f /tmp/zlmon-$ADDRESS ]; then
        echo 0 > /tmp/zlmon-$ADDRESS
    fi
    COUNT=`head -1 /tmp/zlmon-$ADDRESS`
    if ping -c 1 -s 1 -W 1 $ADDRESS; then
        echo 0 > /tmp/zlmon-$ADDRESS
    else
        # Notify (no more than 5 times)
        if [ $COUNT -lt 5 ]; then
            echo -e "Connection Lost!\n\nHost: $ADDRESS\nTime: `date +'%Hh%Mm'`" | mail -s "$SUBJECT ($ADDRESS)" $EMAIL
        fi
        ((COUNT++))
        echo $COUNT > /tmp/zlmon-$ADDRESS
        # Clear counter
        if [ $COUNT -gt 60 ]; then
            echo 0 > /tmp/zlmon-$ADDRESS
        fi
    fi
done < $HOSTLIST

Рядом со скриптом создаем файл hostlist.txt, содержащий адреса серверов, которые необходимо мониторить (это может быть как доменное имя, так и IP адрес):

1
2
3
4
msilab.net
zerolab.net
ruslab.net
[do not delete this string]

Добавляем скрипт в cron, запускать будем каждую минуту:

1
*/1 * * * * /usr/sh/zlmon/zlmon.sh

Не забудьте прописать свой ‘EMAIL’. При недоступности сервера скрипт будет высылать уведомление на вашу почту, но не более 5 уведомлений подряд для недоступного сервера, после этого включается «mute» режим. В ином случае вашу почту просто засыпало бы однотипными уведомлениями. Через час счетчик сбрасывается и если сервер не стал доступен (сам, либо же вы его «подняли»), то вам снова начнут приходить уведомления.

Так как проверка проводится при помощи утилиты ping, не забывайте, у проверяемого на доступность сервера не должен «резаться» ICMP протокол.

Категория: *nix, Programming

Теги: ,

Оставить комментарий

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Аватары обслуживаются системой Gravatar. При публикации сообщения, Вы можете указать свой e-mail в этой системе.

Twitter

MSI Lab Twitter
Яндекс.Деньги:

VISA/MasterCard:

PayPal:
PayPal USD
PayPal RUB
WMZ WMZ: Z375880088307
WMR WMR: R883546545943
YAD YAD: 4100170884493

Donate - лучшее спасибо автору
Количество благодарностей: 28

Разделы

Последние комментарии