- PVSM.RU - https://www.pvsm.ru -

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры - 1
Кажется, что в последнее время электронная почта больше подходит для спама, чем для оперативных оповещений системы мониторинга. В этой статье я соберу методы получения уведомлений на мобильные устройства ― как через мессенджеры, так и через традиционные каналы связи.

Рассматривать решения я буду на примере Zabbix, но их можно адаптировать и под вашу любимую систему, лишь бы она умела запускать скрипты по триггеру.

Slack

Получать уведомления в такой корпоративный мессенджер как Slack действительно удобно, а благодаря открытому API ― еще и просто. С API можно познакомиться в официальной документации [1], я же покажу пару примеров реализации.

Самым простым решением станет интеграция с мессенджером через механизм Webhook. Для начала нужно получить на сайте сервиса в разделе Incoming WebHooks [2] специальный адрес, на который можно отправлять запросы хоть обычным curl. Также там можно будет выбрать иконку и канал для отображения сообщений по умолчанию.

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры - 2
Получаем URL для отправки запросов.

Теперь нужно добавить в Zabbix скрипт ― по умолчанию это папка /usr/local/share/zabbix/alertscripts, ― разрешить его выполнение и настроить в нем необходимые параметры. Со скриптом и подробными инструкциями по настройке можно ознакомиться на GitHub в репозитории zabbix-slack-alertscript [3].

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры - 3
Уведомления в Slack.

Более интересным и сложным способом решения задачи будет создание полноценного бота. В отличие от простого варианта с curl, бот может не только кидать уведомления, но и удалять их при решении проблемы.

Ознакомиться с исходным кодом бота и подробной инструкцией по настройке можно в репозитории zabbix-notify [4] на GitHub. Помимо Slack, этот бот поддерживает уведомления в HipChat, создание новых инцидентов и разрешение старых в системе управления инцидентами PagerDuty.

Telegram

Получать уведомления в этот популярный, но заблокированный на территории РФ, мессенджер тоже удобно, благо открытый API это позволяет. Ознакомиться с возможностями автоматизации можно в документации [5] на официальном сайте.

Для самого простого решения нужно получить свой токен для запросов при помощи «Отца Ботов» ― @BotFather. При помощи команд /start и /newbot главный бот выдаст заветный токен.

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры - 4
Получаем токен для нашего бота-уведомлятора.

Теперь можно отправлять сообщения запросами через curl. В качестве усложненной реализации можно привести в пример бота, отправляющего не только уведомления, но и графики. Завести себе бота поможет GitHub-репозиторий Zabbix-in-Telegram [6].

С подробной инструкцией к простому и чуть более сложному скрипту можно ознакомиться в материале «Отправка уведомлений и графиков из Zabbix в Telegram» [7].

WhatsApp

Этот мессенджер, к сожалению, не имеет документированного публичного API и борется со скриптами на GitHub в рамках «борьбы со спамом». Но выход есть. Можно использовать штатное решение «прямая связь [8]», описанное в официальном FAQ. Но тогда понадобится держать инстанс WhatsApp Web. Аналогично сработает обвязка автокликером веб-версии или десктопного приложения.

Чуть более интересным вариантом будет использование консольного «мессенджера» yowsup. Сам мессенджер доступен в одноименном репозитории [9] GitHub. Пока решение работает. Но если WhatsApp вдруг решит поменять свой API, то для адаптации понадобится время.

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры - 5
Отправка сообщений через консоль.

Подробнее с настройкой консольного скрипта и Zabbix можно ознакомиться в статье «Получаем уведомления от Zabbix в WhatsApp [10]».

ВКонтакте

Если ваш дежурный инженер проводит в соцсетях немало времени, то можно отправлять уведомления ему прямо в сообщения (или на стену) ВКонтакте.

Сначала нам понадобится создать свое приложение в соцсети ― для получения токена. Сделать это можно в разделе «Мои приложения [11]». После создания нового приложения нам нужно скопировать его ID в разделе «Настройки» и перейти по ссылке:

https://oauth.vk.com/authorize?client_id=appid&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,**messages**,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token

Разумеется, вместо appid нужно подставить свой ID. А если нужно просто отправлять сообщения ― без оповещения друзей инженера, если он сам не отвечает, ― то в параметрах достаточно задать messages.

После подтверждения доступа в адресной строке появится подобный адрес:

https://api.vk.com/blank.html#access_token=81eff38378a3bbbcb5c7043a152a69fd04dca057ac821dd7afd7c2d8e35b60172d45a26599c08034cc40a&expires_in=0&user_id=123456

Где в значении параметра access_token будет необходимый нам токен.

Теперь при помощи обычного curl можно слать сообщения, а с оберткой из простого скрипта это сможет делать и Zabbix.

С пошаговой настройкой уведомлений и вариантом реализации скрипта можно ознакомиться в статье «Прикручиваем к Zabbix оповещения в VKontakte [12]».

Jabber

Если некоторое ретроградство вам не чуждо, то еще остался Jabber. Получать уведомления в старый любимый мессенджер Zabbix позволяет «из коробки». Для этого достаточно настроить аккаунт в свойствах оповещений:

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры - 6
Настройка аккаунта Jabber.

И указать нужные JID в свойствах пользователей. Подробнее можно ознакомиться в официальной документации Zabbix в разделе Jabber [13]. Я же добавлю, что если предварительно аккаунт Jabber зарегистрировать в нужных транспортах, то можно отправлять сообщения в ICQ, IRC и прочий агент Mail.ru.

Push

Если не зацикливаться на модных и не очень мессенджерах, то можно получать уведомления и просто через технологию push. Она поддерживается не только в мобильных устройствах, но и в любой Windows 10, а также в браузерах Chrome и Firefox.

Тут нам придется или развертывать свой сервер и приложения для отправки сообщений, или воспользоваться платными сервисами вроде Pushbullet [14], Pushsafer [15] или Pushover [16]. Методика схожа с остальными: регистрируемся, получаем токен, ставим приложения или расширения браузера и шлем сообщения хоть многострадальным curl.

Выбор конкретного сервиса зависит от ценника. В общем и целом все они работают примерно одинаково. Некоторые сервисы предоставляют ограниченное количество бесплатных сообщений ― например, у Pushbullet это будет 100 сообщений в месяц.

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры - 7
Push уведомления на Android.

С примером конкретных реализаций можно ознакомиться:

Уведомления в мессенджеры на телефоны ― это, конечно, хорошо. Но только до тех пор пока у сервера Zabbix есть выход в интернет. Для гарантированного получения уведомлений при сбоях в сети лучше использовать традиционные каналы связи.

SMS

Zabbix «из коробки» поддерживает возможность отправлять SMS. К сожалению, он умеет это делать только через последовательный интерфейс. Если у вас завалялся Siemens MC35 или что-то подобное, то с настройками отправки СМС можно ознакомиться в документации Zabbix в разделе SMS [20].

Помимо такого архаичного варианта, можно воспользоваться сервисом для отправки СМС вроде sms.ru [21]. Благо они все поддерживают разного рода API. Некоторые предоставляют и e-mail шлюз, и для настройки уведомлений не понадобится писать скрипты. Самое главное при выборе шлюза ― проверить его на предмет задержек доставки СМС.

Еще не бот, но уже что-то ― получаем уведомления от Zabbix в мессенджеры - 8
Настройка скрипта для уведомлений по СМС.

С примером настройки Zabbix можно ознакомиться в статье «Бесплатная отправка SMS [22]-уведомлений в Zabbix [22]».

Отправка СМС через внешний шлюз не решит проблему отсутствия интернета на сервере в отличие от отправки через аппаратные устройства с симкой. В качестве бюджетного варианта можно использовать USB-модем ― например, Huawei e1550.

Пошаговую инструкцию можно посмотреть в материале «Оповещения Zabbix через sms, используя GSM модем. Простая настройка [23]».

Голос

СМС можно пропустить запросто, а вот телефонный звонок ― уже сложнее. Поэтому для особо срочных уведомлений можно настроить Zabbix на телефонные звонки. Выходов, как обычно, несколько.

Простым решением будет использование внешнего сервера SIP. Для этого понадобится библиотека PJSIP [24], которую можно применить как консольный SIP-клиент. Для генерации голосового сообщения подойдет утилита text2wave из комплекта генерации речи Festival [25]. Собрав все в кучу и добавив скриптовой магии, можно быть разбуженным заботливым сервером мониторинга.

Пример реализации детально описан в статье «Оповещения из Zabbix телефонным звонком [26]».

Альтернативным вариантом станет использование своей АТС на базе Asterisk и обращение к ней с помощью специальных call-файлов или по интерфейсу AMI [27]. Тогда, при наличии независимого от интернета канала связи вроде аналоговой линии или потока Е1, можно будет выслушать проблемы вашего сервера.

Описание решения доступно в материале «Оповещение о проблемах Zabbix по телефону через Asterisk [28]».

И не забываем охранять охранников

В статье я постарался привести ссылки на основные решения для уведомлений инженеров о проблемах. Главное, при проектировании системы мониторинга учесть возможность отсутствия интернета и не забыть про дублирующую систему, ответив себе на извечный вопрос «Quis custodiet ipsos custodes?». И, конечно же, не нужно превращать сервер мониторинга в спамера, иначе уведомления станут бессмысленны.

Если вы используете какой-то другой способ оповещения ― мы ждем его в комментариях.

Автор: Tri-Edge

Источник [29]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/zabbix/278042

Ссылки в тексте:

[1] документации: https://api.slack.com

[2] Incoming WebHooks: https://my.slack.com/services/new/incoming-webhook

[3] zabbix-slack-alertscript: https://github.com/ericoc/zabbix-slack-alertscript

[4] zabbix-notify: https://github.com/v-zhuravlev/zabbix-notify

[5] документации: https://core.telegram.org/api

[6] Zabbix-in-Telegram: https://github.com/ableev/Zabbix-in-Telegram

[7] «Отправка уведомлений и графиков из Zabbix в Telegram»: https://serveradmin.ru/nastroyka-opoveshheniy-zabbix-v-telegram/

[8] прямая связь: https://faq.whatsapp.com/ru/android/26000030/?category=5245251

[9] репозитории: https://github.com/tgalal/yowsup

[10] Получаем уведомления от Zabbix в WhatsApp: https://habrahabr.ru/post/228405/

[11] Мои приложения: https://vk.com/apps?act=manage

[12] Прикручиваем к Zabbix оповещения в VKontakte: http://marvins.ru/administrirovanie/prikruchivaem-k-zabbix-opoveshheniya-v-vkontakte.html

[13] Jabber: https://www.zabbix.com/documentation/3.4/ru/manual/config/notifications/media/jabber

[14] Pushbullet: https://www.pushbullet.com

[15] Pushsafer: https://www.pushsafer.com

[16] Pushover: https://pushover.net/

[17] Zabbix + Pushbullet: простой способ push-оповещения: https://habrahabr.ru/post/220379/

[18] Zabbix: https://www.pushsafer.com/en/zabbix

[19] zabbix-alertscripts: https://github.com/sriccio/zabbix-alertscripts

[20] SMS: https://www.zabbix.com/documentation/3.4/ru/manual/config/notifications/media/sms

[21] sms.ru: http://sms.ru

[22] Бесплатная отправка SMS: https://habrahabr.ru/post/81630/

[23] Оповещения Zabbix через sms, используя GSM модем. Простая настройка: https://habrahabr.ru/post/270497/

[24] PJSIP: http://www.pjsip.org

[25] Festival: http://www.cstr.ed.ac.uk/projects/festival/

[26] Оповещения из Zabbix телефонным звонком: https://habrahabr.ru/post/126963/

[27] AMI: http://asterisk.ru/knowledgebase/Asterisk+manager+API

[28] Оповещение о проблемах Zabbix по телефону через Asterisk: https://habrahabr.ru/post/184154/

[29] Источник: https://habrahabr.ru/post/353652/?utm_campaign=353652