Как я уведомления мониторинга в мессенджер национальный переносил

от автора

Картинка для привлечения внимания. Хотел сделать статью полностью "суверенной" и сгенерировать ее через новый апи генерации картинок Yandex Art, но "суверенный ИИ" видимо посчитал данную тему запрещенной и генерировать картинку наотрез отказался. Пришлось просить на подмогу ИИ одной недружественной страны, вариантов не было.

Картинка для привлечения внимания. Хотел сделать статью полностью «суверенной» и сгенерировать ее через новый апи генерации картинок Yandex Art, но «суверенный ИИ» видимо посчитал данную тему запрещенной и генерировать картинку наотрез отказался. Пришлось просить на подмогу ИИ одной недружественной страны, вариантов не было.

Хабр, привет в очередной раз! Ситуация с работой интернета в стране начинает напоминать какую-то лотерею, в которой невозможно выиграть. Мобильный интернет по «белым спискам», стационарный с блокировкой всех основных мессенджеров «ради нашей с вами безопасности». И даже совсем стандартная задача — оперативный мониторинг серверов, находящихся в RU сегменте Интернета, превращается в хаос. Придет алерт о недоступности какого либо сервиса или не придет? Главный вопрос многих админов сегодня. Есть разные решения данной проблемы, под катом — как эту проблему решал я и почему выбрал именно такой путь.

Суть проблемы и возможные пути решения

О ситуации с блокировками в стране не знает только ленивый. Они коснулись и изменили нашу цифровую жизнь кардинально, начав очередной виток противостояния брони и снаряда ТСПУ и VPN/Proxy протоколов. Кому-то они не мешают, кто-то использует различные пути обхода. Но статья не о том как я отношусь к различным решениям телекоммуникационно-надзорных ведомств нашей страны, оставим комментарии для данных эмоций. Я в первую очередь хочу заострить внимание на той категории пользователей данных сервисов, у которой от оперативности прихода уведомлений о статусе работы поддерживаемых систем напрямую зависит лояльность их клиентов, а соответственно доход и наличие средств к существованию в принципе. Да, речь о нашей админской доле. Потому всем, кто ожидал здесь лучи праведного гнева в адрес всем известных ведомств нашей страны, можно статью дальше не читать и искать за этим другую — их в сети сейчас достаточно.

До весны текущего года пока работал Telegram с его отличнейшим (без сарказма, не побоюсь этого слова) Bot API, данная проблема в принципе не всплывала. Zabbix мониторил сервера, при проблемах кидал уведомления в Бота, Бот их кидал в нужную группу. Из группы брали в работу и спокойно приводили к статусу Resolved. Но в начале весны для RU сегмента все кардинально изменилось. API эндпоинты Telegram заблокировали, соответственно уведомления приходить перестали. На поверхности лежали следующие решения:

  1. Отправлять уведомления по электронной почте, она не заблокирована. После нескольких лет использования Telegram для таких целей электронная почта воспринимается как крайне медленный и ненадежный способ, письмо может потеряться в спам-фильтрах, дойти через несколько часов, также нет оперативных уведомлений на мобильных устройствах. На мой взгляд такой вариант воспринимался как пересадка на «горбатый запорожец» после того как все время ездил на современном и качественном авто. Да, вроде едет, но как-то максимально нестабильно и некомфортно. Уверен, в комментариях найдутся защитники такого способа, я их не осуждаю, каждый реализует то что считает удобным в первую очередь для себя.

  2. Оставить все как есть, поднять VPN для всех поддерживаемых ресурсов, на мобильном устройстве аналогичным образом использовать Telegram через VPN. Многие насколько я знаю именно так и сделали. Я на самом деле тоже изначально так и сделал. Но потом появилась новая напасть — «белые списки». То есть даже если мониторинг смог достучаться до API через VPN и закинуть туда Alert, не факт что он дойдет до моего мобильного устройства. Ну и поднимать VPN на каждом наблюдаемом сервере либо сегменте сети удовольствие то еще.

  3. Шлюз с SIM картой и обычные звонки/SMS через мобильную сеть при алертах. Вроде бы неплохое и довольно «непотопляемое» решение — но экономически крайне спорное. После драмы с отчуждениями-возвратами различной собственности по «пенсионерской схеме» автоматизированную отправку SMS и звонков ужесточили. Что привело к сильному удорожанию сервисов рассылки SMS и аудио звонков с синтезированием текста. Можно конечно поставить возле сервера SMS шлюз с собственной SIM картой, но аналогично нужны большие вложения — стоимость шлюза, также настройка связки технически сложная, большая вероятность отказа, если SIM карта заблокируется/потеряет сеть. Но на самом деле тема тоже интересная, как минимум для рассылки Hight Critical Alert. Возможно ее тоже реализую в будущем.

  4. Использовать любой другой мессенджер, еще (пока) не заблокированный на территории страны. К примеру Express Messenger либо Microsoft Teams. Но тут получаем тот же самый вышеуказанный упор в «белые списки». Нужно было решение, которое от них не зависит и при этом не разорит меня окончательно.

  5. Использовать великий и могучий наш отечественный, суверенный и работающий на всех парковках мессенджер Макс. Можно долго спорить кем он прослушивается и как, при всех моментах он имеет открытое (и главное бесплатное!) API без необходимости городить прокидки через различные VPN сервисы, а клиентская часть также работает при включении абсолютно любых «белых списков». При этом нет оплаты за каждое сообщение как это происходит при использовании аудиозвонков/SMS. То есть по сути получаем возможность отправки и получения Алертов практически при любом состоянии работы Интернета и любом состоянии блокировок. Конечно есть отзывы о том что при ужесточении блокировок не работает даже Макс, но в регионах моего нахождения такого не наблюдал ни разу, потому рассматриваем это как статистическую погрешность (пока). Именно отсутствие в цепочке дополнительных звеньев в виде VPN и работа напрямую через Bot API наподобие Telegram при всем нежелании по внутренним убеждениям все таки склонили меня именно к данному варианту.

Подготовка к реализации

Проверить работу связки решил на небольшой группе DEV серверов, которые мониторятся одним сервером Zabbix. Как раз можно в единой точке настроить подключение, проверить как это будет работать. Далее уже внедрять на других сегментах при успехе.

Шаг 1 — Макс и уведомления на iOS

Начнем именно с клиентской части так как она самая простая. Я использую как свой основной телефон устройство корпорации Apple. И данная «Империя недавно нанесла ответный удар», а именно удалила из магазина приложений мессенджер Макс. Данный «пируэт» отключил полностью все пуш уведомления данного приложения на устройствах Apple. Но как и с большинством блокировок здесь тоже есть решение. Оно описано в статье камрада denis-19. Подробно расписывать его тут не буду. Если кратко — нужно установить PWA вариант приложения и разрешить уведомления. PWA со стороны Apple заблокировать невозможно (пока), потому уведомления будут ходить резво и без проблем, чего мы и добивались.

Шаг 2 — Регистрация Бота в Макс.

А вот тут у большинства и начинаются проблемы. Самый неоднозначный и непредсказуемый шаг процесса. По политике данного приложения нужно быть либо самозанятым, либо ИП, либо представлять организацию. У меня открыто ИП, потому пошел именно данным путем. Дальше многие ждут слезный рассказ о долгом «оббивании порогов» различных ведомств, сбору миллиона и одной справки о том что «не верблюд», многомесячной переписке через бумажную почту с различными ведомствами, но такого рассказа НЕ БУДЕТ…

Как бы это ни удивляло и не разочаровывало кого-либо. Все вместе заняло конкретно для меня около 3 лет часов с учетом времени модерации бота. Соответственно дальше описываю процесс регистрации в качестве разработчика API и соответствующих процессах:

  • Идем на специальный сайт MAX для бизнеса. Там выбираем в каком качестве вы хотите пройти регистрацию. Я выбрал ИП. Далее профиль нужно верифицировать через кросс авторизацию на портале Госуслуги либо если есть расчетный счет в одном из банков партнеров — можно через кабинет банка. После данной верификации появится возможность создавать ботов и каналы. Если все прошло успешно, появится вот такая панель:

Панель управления "MAX для партнеров"

Панель управления «MAX для партнеров»
  • Выбираем раздел «Чат-Боты». Далее нажимаем на кнопку «Добавить бота», вводим название бота, иконку, в описании указываем цели создания бота. Я указал вот такую информацию:

    Диалог создания/редактирования чат-бота.

    Диалог создания/редактирования чат-бота.
  • После первичного создания бот уйдет на модерацию. У меня она длилась около 2 часов. Если Заполнили все корректно и не подгрузили в качестве иконки что-то запрещенное или «нескрепное» — через какое-то время модерация пройдет и бот станет активен. В мессенджере находим созданного нами бота и нажимаем кнопку «Старт». Далее открываем в браузере чат с данным ботом и копируем цифры из адресной строки браузера. Это идентификатор чата, который нам понадобится при настройке на стороне мониторинга Zabbix. Также не забываем скопировать идентификатор бота. Он находится в поле «ник» на скриншоте выше. Менять его пока к сожалению нельзя, какой дали такой кушай пользуйся. Обязательно нажимаем «Старт» в чате с ботом чтобы чат активировался. Без этого не заработает.

    Идентификатор чата для настройки интеграции. Состоит из чисел.

    Идентификатор чата для настройки интеграции. Состоит из чисел.

Шаг 3 — Скрипт интеграции для Zabbix

После всех указанных действий нам нужно настроить отправку алертов на стороне Zabbix в ранее созданного бота Макс. Для этого проще взять готовый скрипт например в данном репозитории GitHub.

Далее заходим в нашу панель управления Zabbix и настраиваем новый Media Type для Alerts. Добавляем новый тип оповещения. Для меня окно создания выглядело так:

Создаем новый способ оповещений.

Создаем новый способ оповещений.

Далее полностью копируем данный файл из репозитория и вставляем в виде текста в поле «Скрипт». Не забываем привязать шаблоны — какие сообщения и каких типов будут отправляться через данный канал. Далее нажимаем кнопку Test и вводим в поле ChatID скопированные цифры идентификатора чата, скопированные на прошлом шаге. После нажатия на кнопку Test в ваш чат с Ботом должно прийти сообщение от бота. Если оно пришло — все хорошо, если нет — смотрим текст ошибки, чаще всего опечатка в токене или идентификаторе чата.

Тестирование нового метода отправки уведомлений

Тестирование нового метода отправки уведомлений
Успешная отправка уведомления

Успешная отправка уведомления
Успешно полученное тестовое уведомление

Успешно полученное тестовое уведомление

Если уведомление не приходит — нажимаем на кнопку «открыть журнал» в нижней части окна теста и смотрим лог запроса к сервису. Из него в 99% случаев будет понятна причина.

Далее…

На данном шаге основная настройка связки завершается. Следующие шаги уже максимально обыденны — меняем для всех наблюдаемых объектов способ отправки с телеграм на Max и радуемся оперативной и корректной работе уведомлений. На iphone выглядит так:

Уведомления из Zabbix в мессенджере Макс

Уведомления из Zabbix в мессенджере Макс

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

Эпилог

Связка работает уже несколько дней, уведомления ходят без проблем и промедлений. Пока меня полностью устраивает. Еще понаблюдаем некоторое время и будем переводить на такую связку остальные площадки. На данной позитивной ноте со всеми прощаюсь и буду рад в комментариях вашему мнению — как вы в текущей реальности настраиваете доставку уведомлений о проблемах. Какие сервисы/инструменты используете?

ссылка на оригинал статьи https://habr.com/ru/articles/1059120/