- PVSM.RU - https://www.pvsm.ru -
Кажется, что в последнее время электронная почта больше подходит для спама, чем для оперативных оповещений системы мониторинга. В этой статье я соберу методы получения уведомлений на мобильные устройства ― как через мессенджеры, так и через традиционные каналы связи.
Рассматривать решения я буду на примере Zabbix, но их можно адаптировать и под вашу любимую систему, лишь бы она умела запускать скрипты по триггеру.
Получать уведомления в такой корпоративный мессенджер как Slack действительно удобно, а благодаря открытому API ― еще и просто. С API можно познакомиться в официальной документации [1], я же покажу пару примеров реализации.
Самым простым решением станет интеграция с мессенджером через механизм Webhook. Для начала нужно получить на сайте сервиса в разделе Incoming WebHooks [2] специальный адрес, на который можно отправлять запросы хоть обычным curl. Также там можно будет выбрать иконку и канал для отображения сообщений по умолчанию.
Получаем URL для отправки запросов.
Теперь нужно добавить в Zabbix скрипт ― по умолчанию это папка /usr/local/share/zabbix/alertscripts, ― разрешить его выполнение и настроить в нем необходимые параметры. Со скриптом и подробными инструкциями по настройке можно ознакомиться на GitHub в репозитории zabbix-slack-alertscript [3].
Уведомления в Slack.
Более интересным и сложным способом решения задачи будет создание полноценного бота. В отличие от простого варианта с curl, бот может не только кидать уведомления, но и удалять их при решении проблемы.
Ознакомиться с исходным кодом бота и подробной инструкцией по настройке можно в репозитории zabbix-notify [4] на GitHub. Помимо Slack, этот бот поддерживает уведомления в HipChat, создание новых инцидентов и разрешение старых в системе управления инцидентами PagerDuty.
Получать уведомления в этот популярный, но заблокированный на территории РФ, мессенджер тоже удобно, благо открытый API это позволяет. Ознакомиться с возможностями автоматизации можно в документации [5] на официальном сайте.
Для самого простого решения нужно получить свой токен для запросов при помощи «Отца Ботов» ― @BotFather. При помощи команд /start и /newbot главный бот выдаст заветный токен.
Получаем токен для нашего бота-уведомлятора.
Теперь можно отправлять сообщения запросами через curl. В качестве усложненной реализации можно привести в пример бота, отправляющего не только уведомления, но и графики. Завести себе бота поможет GitHub-репозиторий Zabbix-in-Telegram [6].
С подробной инструкцией к простому и чуть более сложному скрипту можно ознакомиться в материале «Отправка уведомлений и графиков из Zabbix в Telegram» [7].
Этот мессенджер, к сожалению, не имеет документированного публичного API и борется со скриптами на GitHub в рамках «борьбы со спамом». Но выход есть. Можно использовать штатное решение «прямая связь [8]», описанное в официальном FAQ. Но тогда понадобится держать инстанс WhatsApp Web. Аналогично сработает обвязка автокликером веб-версии или десктопного приложения.
Чуть более интересным вариантом будет использование консольного «мессенджера» yowsup. Сам мессенджер доступен в одноименном репозитории [9] GitHub. Пока решение работает. Но если WhatsApp вдруг решит поменять свой API, то для адаптации понадобится время.
Отправка сообщений через консоль.
Подробнее с настройкой консольного скрипта и 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. Получать уведомления в старый любимый мессенджер Zabbix позволяет «из коробки». Для этого достаточно настроить аккаунт в свойствах оповещений:
Настройка аккаунта Jabber.
И указать нужные JID в свойствах пользователей. Подробнее можно ознакомиться в официальной документации Zabbix в разделе Jabber [13]. Я же добавлю, что если предварительно аккаунт Jabber зарегистрировать в нужных транспортах, то можно отправлять сообщения в ICQ, IRC и прочий агент Mail.ru.
Если не зацикливаться на модных и не очень мессенджерах, то можно получать уведомления и просто через технологию push. Она поддерживается не только в мобильных устройствах, но и в любой Windows 10, а также в браузерах Chrome и Firefox.
Тут нам придется или развертывать свой сервер и приложения для отправки сообщений, или воспользоваться платными сервисами вроде Pushbullet [14], Pushsafer [15] или Pushover [16]. Методика схожа с остальными: регистрируемся, получаем токен, ставим приложения или расширения браузера и шлем сообщения хоть многострадальным curl.
Выбор конкретного сервиса зависит от ценника. В общем и целом все они работают примерно одинаково. Некоторые сервисы предоставляют ограниченное количество бесплатных сообщений ― например, у Pushbullet это будет 100 сообщений в месяц.
Push уведомления на Android.
С примером конкретных реализаций можно ознакомиться:
Уведомления в мессенджеры на телефоны ― это, конечно, хорошо. Но только до тех пор пока у сервера Zabbix есть выход в интернет. Для гарантированного получения уведомлений при сбоях в сети лучше использовать традиционные каналы связи.
Zabbix «из коробки» поддерживает возможность отправлять SMS. К сожалению, он умеет это делать только через последовательный интерфейс. Если у вас завалялся Siemens MC35 или что-то подобное, то с настройками отправки СМС можно ознакомиться в документации Zabbix в разделе SMS [20].
Помимо такого архаичного варианта, можно воспользоваться сервисом для отправки СМС вроде sms.ru [21]. Благо они все поддерживают разного рода API. Некоторые предоставляют и e-mail шлюз, и для настройки уведомлений не понадобится писать скрипты. Самое главное при выборе шлюза ― проверить его на предмет задержек доставки СМС.
Настройка скрипта для уведомлений по СМС.
С примером настройки 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
Нажмите здесь для печати.