Проблема
Электронная почта как единственный канал оповещений о критических событиях в Zabbix давно перестала устраивать системных администраторов. Письмо может затеряться в спаме, задержаться на перегруженном почтовом сервере или просто остаться незамеченным в нерабочее время. Современные реалии требуют мгновенных уведомлений в мессенджеры и push-сообщений на мобильные устройства, чтобы дежурный администратор мог среагировать на инцидент в течение минуты, а не часа. Настройка уведомлений Zabbix для Telegram, Matrix и push-каналов решает эту проблему, позволяя доставлять алерты прямо в руки ответственным специалистам. В этой статье мы настроим три наиболее востребованных способа оповещения, каждый из которых закрывает определённый сценарий: Telegram для оперативного информирования в корпоративном мессенджере, Matrix для федеративных сред с собственным сервером, и push-уведомления через официальное приложение Zabbix или Pushover для максимальной надёжности.
Решение
Используем штатные возможности Zabbix по созданию пользовательских типов оповещений (Media types). Для каждого канала будет создан отдельный медиатип с собственным скриптом или вебхуком, после чего пользователям назначаются соответствующие методы доставки. Процесс описан в официальной документации Zabbix: Media types, Telegram integration, Matrix integration и Pushover integration. Для push-уведомлений также может использоваться встроенное мобильное приложение Zabbix, которое не требует дополнительных скриптов, а работает через прямое подключение к серверу.
Пошаговая инструкция
Шаг 1. Настройка Telegram-уведомлений
Telegram самый популярный мессенджер среди администраторов благодаря простоте API и удобству использования.
1.1. Создание бота и получение токена
- В приложении Telegram найдите бота
@BotFatherи выполните команду/newbot. - Следуйте инструкциям: задайте имя (например,
Company Zabbix Bot) и username (должен заканчиваться наbot, напримерcompany_zabbix_bot). - После создания вы получите HTTP API Token вида
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Сохраните его.
1.2. Получение chat_id получателей
Каждый пользователь, который должен получать уведомления, должен написать боту любое сообщение. Затем администратор может получить chat_id пользователя, выполнив запрос:
bash
curl -s "https://api.telegram.org/bot<TOKEN>/getUpdates"
В ответе JSON найдите "chat":{"id":123456789} и запишите этот ID.
1.3. Создание медиатипа в Zabbix
- В веб-интерфейсе Zabbix перейдите в Administration → Media types и нажмите Create media type.
- Заполните поля:
-
Name:
Telegram -
Type:
Webhook -
Parameters: добавьте следующие параметры (все с типом
String):-
tokenзначение токена бота. -
chat_idоставьте пустым, оно будет подставляться из профиля пользователя. -
message—{ALERT.MESSAGE}
-
-
Script: выберите один из готовых шаблонов для Telegram (Zabbix 6.0+ идёт с предустановленным шаблоном, достаточно выбрать
Telegramиз списка). Если его нет, загрузите с Zabbix Integrations.
-
Name:
- Нажмите Add.
1.4. Назначение метода оповещения пользователю
- Перейдите в Administration → Users, выберите нужного пользователя.
- На вкладке Media нажмите Add.
-
Type:
Telegram. -
Send to: укажите
chat_idполучателя (число из п.1.2). - Отметьте, для каких категорий событий (Alarms, Recovery и т.д.) и в какое время отправлять.
Шаг 2. Настройка push-уведомлений через официальное приложение Zabbix
Официальное мобильное приложение Zabbix (доступно в Google Play и App Store) поддерживает прямые push-уведомления без сторонних сервисов.
- Убедитесь, что сервер Zabbix доступен из интернета по HTTPS (или хотя бы HTTP для внутренней сети).
- В приложении добавьте сервер Zabbix, войдите под своей учётной записью.
- В профиле пользователя в веб-интерфейсе Zabbix автоматически добавится новый медиатип Zabbix push. Проверьте, что он активен.
- Push-уведомления начнут приходить автоматически при срабатывании триггеров, если для пользователя настроены действия (Actions).
Для административных целей можно также настроить push-уведомления через Pushover, что даёт больше гибкости. Инструкция: Zabbix Pushover integration. Процесс аналогичен Telegram: регистрируете приложение в Pushover, получаете API-токен и user key, создаёте медиатип webhook.
Шаг 3. Настройка Matrix-уведомлений
Matrix федеративный протокол для децентрализованных коммуникаций, часто используемый в enterprise-среде с собственным сервером (Synapse, Element). Интеграция Zabbix с Matrix позволяет отправлять алерты в комнаты (rooms).
3.1. Создание пользователя-бота в Matrix
- Зарегистрируйте отдельного пользователя (бота) на вашем Matrix-сервере, например
@zabbixbot:yourcompany.com. - Получите токен доступа (access token) любым Matrix-клиентом (например, через Element Web/Desktop в настройках аккаунта → Разработчик → Токен доступа). Или выполните вход через API:
bash
curl -XPOST -d '{"type":"m.login.password","user":"zabbixbot","password":"secret"}' "https://matrix.yourcompany.com/_matrix/client/r0/login"
Из ответа сохраните access_token.
3.2. Создание комнаты и определение её ID
- Создайте комнату для уведомлений (например,
#zabbix-alerts:yourcompany.com) и пригласите в неё бота. - Узнайте её внутренний ID (комната может иметь отображаемое имя, но для API нужен ID вида
!abcdefg:yourcompany.com). Используйте API запрос списка комнат с полученным токеном:
bash
curl -H "Authorization: Bearer <ACCESS_TOKEN>" "https://matrix.yourcompany.com/_matrix/client/r0/joined_rooms"
3.3. Создание медиатипа в Zabbix
- В Administration → Media types создайте новый тип.
-
Name:
Matrix -
Type:
Webhook - Параметры:
-
homeserver_url-URL вашего Matrix-сервера. -
access_token— токен, полученный в п.3.1. -
room_id— ID комнаты (подставляется из профиля пользователя или жёстко задаётся). -
message—{ALERT.MESSAGE}.
-
- Используйте готовый скрипт из репозитория Zabbix (раздел Matrix) или напишите свой простой вебхук, отправляющий POST-запрос к API Matrix
/send/m.room.message. Официальная документация: Matrix media type.
3.4. Назначение пользователям
Аналогично Telegram, в профиле пользователя добавьте медиатип Matrix, укажите в поле Send to ID комнаты. Несколько комнат можно разделять запятой.
Шаг 4. Проверка работы уведомлений
- Создайте тестовый триггер (например, на контроле пинга), при срабатывании которого должно отправляться оповещение.
- Убедитесь, что настроены Actions (Configuration → Actions), включающие отправку уведомлений для соответствующих проблем.
- Активируйте триггер (отключите пингуемый хост) и наблюдайте за поступлением сообщений в Telegram, Matrix и push-каналы.
Устранение распространённых проблем
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Уведомления Telegram не приходят | Неправильный chat_id или бот не написал пользователю первым | Проверьте chat_id через getUpdates. Убедитесь, что пользователь отправил боту хотя бы одно сообщение. |
| В Matrix-уведомлениях ошибка 403 Forbidden | Неверный access_token или недостаточно прав у бота | Проверьте токен в клиенте. Убедитесь, что бот состоит в комнате и имеет права на отправку сообщений. |
| Push-уведомления на мобильное приложение Zabbix не доходят | Не настроен доступ сервера к интернету для Firebase/Zabbix Cloud или не включено фоновое обновление | Проверьте, что сервер Zabbix может обращаться к fcm.googleapis.com (для Android) и *.push.apple.com (для iOS). В приложении выйдите и зайдите заново. |
| В Telegram приходят кракозябры вместо кириллицы | Проблемы с кодировкой скрипта | Убедитесь, что в параметрах вебхука для Telegram не происходит двойной конвертации UTF-8. Используйте встроенный шаблон Telegram из дистрибутива Zabbix. |
| Дублирование уведомлений | Настроены несколько медиатипов с одинаковыми событиями | Проверьте действия (Actions), отключите лишние операции отправки. |
Итог
Настройка уведомлений Zabbix через Telegram, Matrix и push-каналы превращает мониторинг в действительно проактивный инструмент, позволяя администраторам узнавать об инцидентах в реальном времени, где бы они ни находились. Комбинация из публичного мессенджера, федеративного Matrix и прямых push-уведомлений закрывает все возможные сценарии: оповещение в общей группе, надёжные уведомления на мобильный телефон и интеграция с корпоративным коммуникационным сервером. Единожды настроив эти каналы, вы существенно повысите скорость реакции на сбои и сократите среднее время восстановления сервисов (MTTR). Не забывайте тестировать уведомления после каждого обновления Zabbix и периодически проверять актуальность токенов это гарантирует, что алерты дойдут до адресатов тогда, когда это действительно важно.







