Собака-наблюдака aka Watchdog

Собака-наблюдака предназначена для собаченья и наблюдаченья оперативного мониторинга окружающей действительности. Она предоставляет гибкий функционал для описания внештатных ситуаций практически любой странности а также для оповещения, в случае их возникновения. В том числе, при помощи отсылки SMS через поддерживаемые собакой-посылакой сервисы, по електронной почте, мессенджера Telegram а также может вызывать запуск какого-либо внешнего скрипта при описании события. Для включения собаки-наблюдаки требуется изменение опции WATCHDOG_ENABLED в alter.ini.

Возможные проверки

Типы задач Действие Возвращает
icmpping выполняется ICMP ping хоста указанного в параметре bool
tcpping выполняется попытка соединения к хосту указанному в параметре в виде host:port bool
script запуск скрипта по пути указанному в параметре string
getusertraff получение количества трафика пользователя с логином указанном в параметре int
fileexists проверка на существование файла по пути указанному в параметре bool

Возможные операторы для проверки

Условия Значение Требует «Условие»?
=true Истинно
=false Ложно
== Равно +
!= Не равно +
> Больше +
< Меньше +
empty Пустой результат
changed Изменилось
notchanged Не изменилось
like Содержит +
notlike Не содержит +

Действия выполняемые в результате прохождения условий

Действия Результат
log запись в системный лог
sms отсылка СМС уведомления, дополнительные номера можно указывать в формате {номер,номер}.
noprimary в случае указанных действий sms и заполненных {доп. номерах} - основные номера игнорируются
email отсылка уведомления почтой
telegram отсылка уведомления Telegram
andresult в случае указанных действий sms или email к тексту сообщения будет добавлен текущий результат задачи
oldresult в случае указанных действий sms или email к тексту сообщения будет добавлен предыдущий результат задачи
script запуск скрипта по пути указанному в виде [/полный/путь/к_скрипту]

Логика работы

Каждую задачу для Собаки-наблюдаки следует воспринимать как «случилось нечто» или «ой какое событие» которые случаются в случае возвращения «типом проверки» по «параметру» результата предусмотренного «оператором» с опциональным «условием». Как пример, можно привести вот такую простенькую задачу:

Активный Имя Тип проверки Параметр Оператор Условие Действия
X Гугл не пингается icmpping 8.8.8.8 =false log,sms,email

При обнаружении того, что ping на адрес 8.8.8.8 вернул значение «ложно» собака-наблюдака заботливо отошлет вам СМС-ку, почту и запишет в лог уведомление о том, что «Гугл не пингается».

А что делать, если мы не хотим, чтобы собака постоянно нам спамила при отсутствующем пинге куда-то? А очень просто.

Активный Имя Тип проверки Параметр Оператор Условие Действия
X Чего-то изменилось icmpping 192.168.0.22 changed log,sms,email,andresult

В принципе никто не запрещает нам делать и задачи такого плана:

Активный Имя Тип проверки Параметр Оператор Условие Действия
X В серверной пожар script /bin/gettemp > 22 log,sms,email, andresult

Вызывая внешний скрипт, снимающий температуру с термодатчиков и при превышении 22 градусов орать всеми известными способами также дописывая в сообщении о температуре вызвавшей панику.

Если творчески подойти к парсингу вывода внешнего ПО - можно мониторить много интересных вещей без дописывания внешних скриптов:

Активный Имя Тип проверки Параметр Оператор Условие Действия
X DNS сломался script nslookup ya.ru | tail -n 2 like find log,sms

Также мы можем очень просто и элегантно контролировать запущенность важных сервисов типа stargazer создав задачу такого плана:

Активный Имя Тип проверки Параметр Оператор Условие Действия
X Stargazer упал script /bin/ps aux | /usr/bin/grep stg notlike stargazer log,sms

Хотя ту же самую по сути задачу мы можем оформить как

Активный Имя Тип проверки Параметр Оператор Условие Действия
X Stargazer упал fileexists /var/run/stargazer.pid =false log,sms

Чтобы не сосредотачиваться на тривиальных вещах, мы можем предусмотреть ситуацию, когда у нас есть очень важный клиент с логином vipclient на прекращение трафика от которого нам следует таки отреагировать. Описать такое мы можем в виде:

Активный Имя Тип проверки Параметр Оператор Условие Действия
X Важный клиент подох getusertraff vipclient notchanged log,sms,email

Окей, а если мы хотим также эту же СМС-ку послать скажем администратору этого же важного клиента, чтобы он точно знал, что он подох?

Активный Имя Тип проверки Параметр Оператор Условие Действия
X Важный клиент подох getusertraff vipclient notchanged log,sms,email {+380509999999}

а если мы хотим послать СМС только на дополнительный номер? Да, без проблем:

log,sms,email {+380509999999} noprimary

Хотя опять же никто не запрещает нам, скажем мониторить этого клиента скажем внешним скриптом запрашивающим по SNMP состояние порта или счетчик трафика на свиче, куда он воткнут, либо банально его дергать по какому-то TCP порту. Думаю вышеприведенных примеров достаточно для получения представления о гибкости собаки-наблюдаки и возможностях построения оповещений по практически любым внештатным ситуациям. Обработка задач собаки происходит при соответствующем вызове RemoteAPI. Рекомендуемым интервалом является 10 минут.

Отсылка SMS

Не требует включенного модуля рассылки TurboSMS. Весь функционал отправки реализован посредством подсистемы "собака-посылака". Номера для отсылки разделяются запятыми и указываются в международном формате (например +380509999999). Их, как основных так и дополнительных может быть сколько угодно.

watchdog.txt · Последние изменения: 2016/12/10 14:54 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki