Хабр, привет в очередной раз! Ситуация с работой интернета в стране начинает напоминать какую-то лотерею, в которой невозможно выиграть. Мобильный интернет по «белым спискам», стационарный с блокировкой всех основных мессенджеров «ради нашей с вами безопасности». И даже совсем стандартная задача — оперативный мониторинг серверов, находящихся в RU сегменте Интернета, превращается в хаос. Придет алерт о недоступности какого либо сервиса или не придет? Главный вопрос многих админов сегодня. Есть разные решения данной проблемы, под катом — как эту проблему решал я и почему выбрал именно такой путь.
Суть проблемы и возможные пути решения
О ситуации с блокировками в стране не знает только ленивый. Они коснулись и изменили нашу цифровую жизнь кардинально, начав очередной виток противостояния брони и снаряда ТСПУ и VPN/Proxy протоколов. Кому-то они не мешают, кто-то использует различные пути обхода. Но статья не о том как я отношусь к различным решениям телекоммуникационно-надзорных ведомств нашей страны, оставим комментарии для данных эмоций. Я в первую очередь хочу заострить внимание на той категории пользователей данных сервисов, у которой от оперативности прихода уведомлений о статусе работы поддерживаемых систем напрямую зависит лояльность их клиентов, а соответственно доход и наличие средств к существованию в принципе. Да, речь о нашей админской доле. Потому всем, кто ожидал здесь лучи праведного гнева в адрес всем известных ведомств нашей страны, можно статью дальше не читать и искать за этим другую — их в сети сейчас достаточно.
До весны текущего года пока работал Telegram с его отличнейшим (без сарказма, не побоюсь этого слова) Bot API, данная проблема в принципе не всплывала. Zabbix мониторил сервера, при проблемах кидал уведомления в Бота, Бот их кидал в нужную группу. Из группы брали в работу и спокойно приводили к статусу Resolved. Но в начале весны для RU сегмента все кардинально изменилось. API эндпоинты Telegram заблокировали, соответственно уведомления приходить перестали. На поверхности лежали следующие решения:
-
Отправлять уведомления по электронной почте, она не заблокирована. После нескольких лет использования Telegram для таких целей электронная почта воспринимается как крайне медленный и ненадежный способ, письмо может потеряться в спам-фильтрах, дойти через несколько часов, также нет оперативных уведомлений на мобильных устройствах. На мой взгляд такой вариант воспринимался как пересадка на «горбатый запорожец» после того как все время ездил на современном и качественном авто. Да, вроде едет, но как-то максимально нестабильно и некомфортно. Уверен, в комментариях найдутся защитники такого способа, я их не осуждаю, каждый реализует то что считает удобным в первую очередь для себя.
-
Оставить все как есть, поднять VPN для всех поддерживаемых ресурсов, на мобильном устройстве аналогичным образом использовать Telegram через VPN. Многие насколько я знаю именно так и сделали. Я на самом деле тоже изначально так и сделал. Но потом появилась новая напасть — «белые списки». То есть даже если мониторинг смог достучаться до API через VPN и закинуть туда Alert, не факт что он дойдет до моего мобильного устройства. Ну и поднимать VPN на каждом наблюдаемом сервере либо сегменте сети удовольствие то еще.
-
Шлюз с SIM картой и обычные звонки/SMS через мобильную сеть при алертах. Вроде бы неплохое и довольно «непотопляемое» решение — но экономически крайне спорное. После драмы с отчуждениями-возвратами различной собственности по «пенсионерской схеме» автоматизированную отправку SMS и звонков ужесточили. Что привело к сильному удорожанию сервисов рассылки SMS и аудио звонков с синтезированием текста. Можно конечно поставить возле сервера SMS шлюз с собственной SIM картой, но аналогично нужны большие вложения — стоимость шлюза, также настройка связки технически сложная, большая вероятность отказа, если SIM карта заблокируется/потеряет сеть. Но на самом деле тема тоже интересная, как минимум для рассылки Hight Critical Alert. Возможно ее тоже реализую в будущем.
-
Использовать любой другой мессенджер, еще (пока) не заблокированный на территории страны. К примеру Express Messenger либо Microsoft Teams. Но тут получаем тот же самый вышеуказанный упор в «белые списки». Нужно было решение, которое от них не зависит и при этом не разорит меня окончательно.
-
Использовать великий и могучий наш отечественный, суверенный
и работающий на всех парковкахмессенджер Макс. Можно долго спорить кем он прослушивается и как, при всех моментах он имеет открытое (и главное бесплатное!) API без необходимости городить прокидки через различные VPN сервисы, а клиентская часть также работает при включении абсолютно любых «белых списков». При этом нет оплаты за каждое сообщение как это происходит при использовании аудиозвонков/SMS. То есть по сути получаем возможность отправки и получения Алертов практически при любом состоянии работы Интернета и любом состоянии блокировок. Конечно есть отзывы о том что при ужесточении блокировок не работает даже Макс, но в регионах моего нахождения такого не наблюдал ни разу, потому рассматриваем это как статистическую погрешность (пока). Именно отсутствие в цепочке дополнительных звеньев в виде VPN и работа напрямую через Bot API наподобие Telegram при всем нежелании по внутренним убеждениям все таки склонили меня именно к данному варианту.
Подготовка к реализации
Проверить работу связки решил на небольшой группе DEV серверов, которые мониторятся одним сервером Zabbix. Как раз можно в единой точке настроить подключение, проверить как это будет работать. Далее уже внедрять на других сегментах при успехе.
Шаг 1 — Макс и уведомления на iOS
Начнем именно с клиентской части так как она самая простая. Я использую как свой основной телефон устройство корпорации Apple. И данная «Империя недавно нанесла ответный удар», а именно удалила из магазина приложений мессенджер Макс. Данный «пируэт» отключил полностью все пуш уведомления данного приложения на устройствах Apple. Но как и с большинством блокировок здесь тоже есть решение. Оно описано в статье камрада denis-19. Подробно расписывать его тут не буду. Если кратко — нужно установить PWA вариант приложения и разрешить уведомления. PWA со стороны Apple заблокировать невозможно (пока), потому уведомления будут ходить резво и без проблем, чего мы и добивались.
Шаг 2 — Регистрация Бота в Макс.
А вот тут у большинства и начинаются проблемы. Самый неоднозначный и непредсказуемый шаг процесса. По политике данного приложения нужно быть либо самозанятым, либо ИП, либо представлять организацию. У меня открыто ИП, потому пошел именно данным путем. Дальше многие ждут слезный рассказ о долгом «оббивании порогов» различных ведомств, сбору миллиона и одной справки о том что «не верблюд», многомесячной переписке через бумажную почту с различными ведомствами, но такого рассказа НЕ БУДЕТ…
Как бы это ни удивляло и не разочаровывало кого-либо. Все вместе заняло конкретно для меня около 3 лет часов с учетом времени модерации бота. Соответственно дальше описываю процесс регистрации в качестве разработчика API и соответствующих процессах:
-
Идем на специальный сайт MAX для бизнеса. Там выбираем в каком качестве вы хотите пройти регистрацию. Я выбрал ИП. Далее профиль нужно верифицировать через кросс авторизацию на портале Госуслуги либо если есть расчетный счет в одном из банков партнеров — можно через кабинет банка. После данной верификации появится возможность создавать ботов и каналы. Если все прошло успешно, появится вот такая панель:
-
Выбираем раздел «Чат-Боты». Далее нажимаем на кнопку «Добавить бота», вводим название бота, иконку, в описании указываем цели создания бота. Я указал вот такую информацию:
Диалог создания/редактирования чат-бота. -
После первичного создания бот уйдет на модерацию. У меня она длилась около 2 часов. Если Заполнили все корректно и не подгрузили в качестве иконки что-то запрещенное или «нескрепное» — через какое-то время модерация пройдет и бот станет активен. В мессенджере находим созданного нами бота и нажимаем кнопку «Старт». Далее открываем в браузере чат с данным ботом и копируем цифры из адресной строки браузера. Это идентификатор чата, который нам понадобится при настройке на стороне мониторинга Zabbix. Также не забываем скопировать идентификатор бота. Он находится в поле «ник» на скриншоте выше. Менять его пока к сожалению нельзя, какой дали такой
кушайпользуйся. Обязательно нажимаем «Старт» в чате с ботом чтобы чат активировался. Без этого не заработает.
Идентификатор чата для настройки интеграции. Состоит из чисел.
Шаг 3 — Скрипт интеграции для Zabbix
После всех указанных действий нам нужно настроить отправку алертов на стороне Zabbix в ранее созданного бота Макс. Для этого проще взять готовый скрипт например в данном репозитории GitHub.
Далее заходим в нашу панель управления Zabbix и настраиваем новый Media Type для Alerts. Добавляем новый тип оповещения. Для меня окно создания выглядело так:
Далее полностью копируем данный файл из репозитория и вставляем в виде текста в поле «Скрипт». Не забываем привязать шаблоны — какие сообщения и каких типов будут отправляться через данный канал. Далее нажимаем кнопку Test и вводим в поле ChatID скопированные цифры идентификатора чата, скопированные на прошлом шаге. После нажатия на кнопку Test в ваш чат с Ботом должно прийти сообщение от бота. Если оно пришло — все хорошо, если нет — смотрим текст ошибки, чаще всего опечатка в токене или идентификаторе чата.
Если уведомление не приходит — нажимаем на кнопку «открыть журнал» в нижней части окна теста и смотрим лог запроса к сервису. Из него в 99% случаев будет понятна причина.
Далее…
На данном шаге основная настройка связки завершается. Следующие шаги уже максимально обыденны — меняем для всех наблюдаемых объектов способ отправки с телеграм на Max и радуемся оперативной и корректной работе уведомлений. На iphone выглядит так:
В скрипте уже реализованы красочные пометки — проблема будет помечаться красным восклицательным знаком, резолв проблемы — зеленой галочкой. Все обозначения можно посмотреть в коде скрипта.
Эпилог
Связка работает уже несколько дней, уведомления ходят без проблем и промедлений. Пока меня полностью устраивает. Еще понаблюдаем некоторое время и будем переводить на такую связку остальные площадки. На данной позитивной ноте со всеми прощаюсь и буду рад в комментариях вашему мнению — как вы в текущей реальности настраиваете доставку уведомлений о проблемах. Какие сервисы/инструменты используете?
ссылка на оригинал статьи https://habr.com/ru/articles/1059120/