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

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

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

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

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

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


Получаем URL для отправки запросов.

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


Уведомления в Slack.

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

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

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

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


Получаем токен для нашего бота-уведомлятора.

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

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

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

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


Отправка сообщений через консоль.

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

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

Сделать это можно в разделе «Мои приложения». Сначала нам понадобится создать свое приложение в соцсети ― для получения токена. После создания нового приложения нам нужно скопировать его 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

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

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

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

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

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

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

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


Настройка аккаунта Jabber.

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

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

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

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


Push уведомления на Android.

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

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

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

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


Настройка скрипта для уведомлений по СМС.

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

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

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

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

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

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

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

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

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

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


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

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Глава Роскомнадзора считает, что вокруг ситуации с Telegram «много пены»

На днях глава Роскомнадзора Александр Жаров дал развернутое интервью ТАСС. Беседа с руководителем ведомства проходила во время Петербургского международного экономического форума. Жаров дал ответы не только в отношении ситуации с Telegram, но и относительно того, что может грозить Facebook, WhatsApp ...

[Перевод] Google Cloud: новая платформа и возможности машинного обучения

Здравствуйте, коллеги. Одним из наиболее масштабных решений, которые определяют перспективы этой отрасли, несомненно, является платформа Google Cloud, как нельзя лучше адаптированная для машинного обучения. В последнее время мы вынашиваем планы издать книгу по обработке естественного языка. Просим высказываться о востребованности ...