Добавить в корзинуПозвонить
Найти в Дзене
Истории

Как мы подружили Zabbix с TrueConf и перестали пропускать алерты

У нас в компании мониторинг на Zabbix — стандартная история для любой более-менее серьёзной инфраструктуры. А для общения используем TrueConf: свой сервер, всё внутри периметра, никаких внешних мессенджеров. Казалось бы, живи и радуйся. Раньше алерты летели в Telegram — удобно, привычно, все довольны. Потом Telegram заблокировали, разблокировали, снова начали блокировать. В какой-то момент надёжность доставки стала такой, что проще было вообще не рассчитывать на неё. Какое-то время жили на почте — но почту у нас, положа руку на сердце, никто особо не читает в режиме реального времени. Пока кто-то откроет ящик, пока заметит — проблема уже разрослась. Хотелось, чтобы оповещения падали прямо в чат, туда, где люди и так сидят весь день. Первым делом полез искать готовое решение. Интеграции Zabbix с Telegram, Slack, Microsoft Teams — этого добра навалом. С TrueConf решения тоже нашлись, но их функциональность оказалась крайне ограниченной и не покрывала даже базовые потребности. Оно и понят

У нас в компании мониторинг на Zabbix — стандартная история для любой более-менее серьёзной инфраструктуры. А для общения используем TrueConf: свой сервер, всё внутри периметра, никаких внешних мессенджеров. Казалось бы, живи и радуйся.

Раньше алерты летели в Telegram — удобно, привычно, все довольны. Потом Telegram заблокировали, разблокировали, снова начали блокировать. В какой-то момент надёжность доставки стала такой, что проще было вообще не рассчитывать на неё. Какое-то время жили на почте — но почту у нас, положа руку на сердце, никто особо не читает в режиме реального времени. Пока кто-то откроет ящик, пока заметит — проблема уже разрослась. Хотелось, чтобы оповещения падали прямо в чат, туда, где люди и так сидят весь день.

Первым делом полез искать готовое решение. Интеграции Zabbix с Telegram, Slack, Microsoft Teams — этого добра навалом. С TrueConf решения тоже нашлись, но их функциональность оказалась крайне ограниченной и не покрывала даже базовые потребности. Оно и понятно: TrueConf больше распространён в госсекторе и корпоративной среде, где не принято делиться полноценными интеграциями в открытом доступе. В итоге пришлось делать своё решение.

Здесь отдельное спасибо TrueConf — они выпустили официальную Python-библиотеку python-trueconf-bot, которая позволяет подключать ботов к серверу и программно отправлять сообщения в чаты. Без неё пришлось бы разбираться с протоколом с нуля. А так — есть библиотека, есть документация, есть понятный интерфейс. Именно это и сделало всю затею реалистичной.

---

Идея простая: Zabbix умеет слать вебхуки — POST-запрос с данными алерта на любой URL. Значит, нужен небольшой сервис, который этот запрос примет, разберёт и перешлёт в нужный чат TrueConf.

Написал небольшое веб-приложение. Zabbix шлёт туда данные: кому отправить, тема, текст. Сервис смотрит в свою базу — какому чату в TrueConf соответствует этот получатель — и отправляет сообщение. Всё.

Чтобы не лазить каждый раз в конфиги руками, сделал простой веб-интерфейс. Вот что там есть:

Каналы. Это маппинг между именем в Zabbix и чатом в TrueConf. В Zabbix у пользователя в поле «Send to» пишешь, например, «devops-alerts» — и сервис знает, в какой именно групповой чат это отправить. Каналов можно добавить сколько нужно. Прямо из интерфейса можно создать групповой чат в TrueConf, добавить или удалить участников по логину, отправить тестовое сообщение — проверить что всё работает до того как придёт настоящий алерт.

Каналы
Каналы
Добавление людей в канал с алертами, не заходя в TrueConf за бота
Добавление людей в канал с алертами, не заходя в TrueConf за бота

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

-4

Настройки подключения. Адрес TrueConf-сервера, логин и пароль бота, галочка проверки SSL. Статус подключения бота виден прямо в боковом меню — сразу понятно, живой он или нет.

Настройки
Настройки

---

Пара моментов, на которых споткнулся.

TrueConf работает через WebSocket, а не через обычный HTTP API. Это значит, что бот держит постоянное соединение с сервером, а не коннектится каждый раз при отправке. Поначалу это показалось усложнением, но на деле всё работает стабильно — соединение живёт, сообщения улетают быстро.

Ещё один момент — в Zabbix поле «Send to» для медиа типа одно. Если хочешь отправлять разные алерты в разные чаты, нужно создавать отдельные медиа для каждого пользователя Zabbix с разными значениями этого поля. Не самое очевидное решение, но рабочее.

---

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

Если у вас похожая история — Zabbix есть, TrueConf есть, а между ними пропасть — возможно, это направление стоит попробовать.