Настройка алертинга в Zabbix через Express: пошаговое руководство 2026 | AdminWiki

Настройка алертинга в Zabbix через Express: пошаговое руководство 2026

28 июля 2026 10 мин. чтения

Вы настраиваете мониторинг в Zabbix, триггеры срабатывают, но уведомления не доходят до команды. Проблема в связке медиатипа, действий и канала доставки. Это руководство - полный цикл настройки алертинга через Express: от получения токена до проверки всей цепочки. Вы получите готовую конфигурацию, которая отправляет оповещения за секунды.

Express - это быстрый канал уведомлений, который интегрируется с Zabbix через вебхук. В отличие от email, сообщения приходят мгновенно и не теряются в спаме. В сравнении с Telegram, Express дает больше контроля над форматом сообщений и не зависит от клиентских приложений. После настройки вы сократите время реакции на инциденты и исключите пропуск критических событий.

Перед началом работы убедитесь, что у вас есть Zabbix версии 6.0 или новее, права суперадминистратора в веб-интерфейсе и токен Express. Если вы ранее сталкивались с проблемами при настройке, изучите типичные ошибки при настройке оповещений Zabbix через Express - это сэкономит время на отладке.

Что такое Express и зачем подключать его к Zabbix

Express - это сервис уведомлений, который принимает HTTP-запросы и доставляет сообщения в чаты, каналы или личные сообщения. Для DevOps-команд это означает единую точку входа для алертов из разных систем мониторинга. Скорость доставки - менее секунды от момента срабатывания триггера до появления уведомления на устройстве дежурного инженера.

Сравнение с альтернативами:

  • Email: задержки от 30 секунд до нескольких минут, риск попадания в спам, сложность групповой маршрутизации. Express выигрывает по скорости и надежности.
  • Telegram: требует установленного клиента, зависит от доступности серверов Telegram. Express работает как самостоятельный канал с гарантированной доставкой.
  • Slack: хорош для командной работы, но требует платной подписки для хранения истории. Express часто используется как легковесная альтернатива с меньшим потреблением ресурсов.

Интеграция строится на вебхуке: Zabbix отправляет JSON-запрос к API Express при срабатывании триггера. Для этого нужен токен аутентификации и правильно сконфигурированный медиатип. Если вы еще не настраивали медиатип, обратитесь к пошаговой настройке медиатипа Express в Zabbix - там разобраны все параметры для версий 6.0 и 7.0.

Подготовка к настройке: что нужно знать перед стартом

Для успешной интеграции потребуются четыре компонента: Zabbix сервер с веб-интерфейсом, учетная запись с правами администратора, токен Express и базовое понимание медиатипов и действий. Отсутствие любого из этих элементов остановит настройку.

Получение токена Express

Токен - это ключ аутентификации, который Zabbix передает в заголовке каждого запроса. Процесс получения:

  1. Войдите в панель управления Express.
  2. Перейдите в раздел «Интеграции» или «API».
  3. Создайте новое приложение или бота. Выберите тип «Webhook».
  4. Скопируйте сгенерированный токен. Он отображается только один раз - сохраните его в защищенном месте.
  5. Запишите ID чата или канала, куда будут приходить уведомления. Этот идентификатор потребуется при привязке медиатипа к пользователю.

Бесплатный тариф Express может ограничивать количество запросов в минуту - обычно 60 сообщений. Для production-сред с сотнями триггеров этого достаточно, но при массовой эскалации возможна задержка. Проверьте лимиты вашего тарифа до настройки.

Проверка версии Zabbix и прав доступа

Минимальная поддерживаемая версия - Zabbix 6.0 LTS. В более старых версиях (5.0 и ниже) вебхуки работают с ограничениями: нет встроенного тестирования медиатипов, другой формат макросов. Проверьте версию в веб-интерфейсе: раздел Administration → General, строка Zabbix server version.

Учетная запись должна иметь роль Super admin. Роли Admin или User не позволяют создавать медиатипы и действия. Если вы используете Zabbix 7.0, проверьте, что у пользователя включены разрешения на управление медиатипами в разделе User roles.

Пошаговая настройка медиатипа Express в Zabbix

Медиатип - это шаблон, который описывает, как Zabbix отправляет сообщение во внешнюю систему. Создание медиатипа Express - ключевой шаг, от которого зависит формат и доставляемость уведомлений.

Перейдите в Administration → Media types и нажмите Create media type. Задайте имя, например, «Express_Alerting». В поле Type выберите Webhook. Теперь заполните параметры.

Конфигурация вебхука Express: параметры и переменные

Параметры вебхука определяют, куда и как Zabbix отправляет данные. Вот рабочая конфигурация:

  • URL: https://api.express-notify.example.com/v1/send - замените домен на актуальный эндпоинт вашего сервера Express.
  • HTTP method: POST.
  • Headers: добавьте два заголовка: Content-Type: application/json и Authorization: Bearer {ваш_токен}.
  • Body: JSON-структура с макросами Zabbix.

Пример тела запроса:

{
  "chat_id": "{ALERT.SENDTO}",
  "text": "Проблема: {EVENT.NAME}\nХост: {HOST.NAME}\nУровень: {EVENT.SEVERITY}\nВремя: {EVENT.TIME}",
  "parse_mode": "HTML"
}

Макросы Zabbix автоматически подставляют значения при срабатывании триггера. Основные макросы для алертинга:

  • {EVENT.NAME} - название события (имя триггера).
  • {HOST.NAME} - имя хоста, на котором сработал триггер.
  • {EVENT.SEVERITY} - уровень серьезности: Not classified, Information, Warning, Average, High, Disaster.
  • {EVENT.TIME} - время события в формате ISO 8601.
  • {ALERT.SENDTO} - адрес получателя, указанный в профиле пользователя.

Поле chat_id использует макрос {ALERT.SENDTO}. При привязке медиатипа к пользователю вы укажете ID чата Express - Zabbix подставит его в запрос. Это позволяет отправлять уведомления разным пользователям в разные чаты через один медиатип.

Тестирование медиатипа: как убедиться, что сообщение уходит

Zabbix предоставляет встроенную функцию тестирования. В форме редактирования медиатипа нажмите кнопку Test. В открывшемся окне заполните:

  • Send to: тестовый ID чата Express.
  • Subject: любая строка, например, «Тестовое сообщение».
  • Message: текст тестового уведомления.

Нажмите Test. Zabbix отправит запрос и покажет ответ сервера Express. Успешный ответ содержит HTTP-статус 200 и подтверждение доставки. Если тест не проходит:

  1. Проверьте токен: скопирован ли он полностью, не истек ли срок действия.
  2. Проверьте сетевую доступность: выполните curl -X POST https://api.express-notify.example.com/v1/send с сервера Zabbix.
  3. Проверьте формат JSON: лишние запятые, незакрытые скобки, неверные имена полей ломают запрос.
  4. Включите отладку медиатипов в Zabbix: Administration → Media types, выберите ваш тип, установите Debug mode в Enabled. Повторите тест и проанализируйте логи.

Создание Actions: связываем триггеры с уведомлениями

Действия (Actions) определяют, при каких условиях Zabbix отправляет уведомления и кому. Без настроенного действия медиатип останется невостребованным - система будет знать, как отправлять сообщения, но не будет знать, когда это делать.

Перейдите в Configuration → Actions и нажмите Create action. Дайте действию имя, например, «Critical alerts to Express».

Определение условий срабатывания: фильтры и теги

Вкладка Conditions определяет, на какие события реагирует действие. Рекомендуемая конфигурация для production:

  • Type of calculation: AND - все условия должны выполняться одновременно.
  • Condition A: Trigger severity >= High - отправляем только критические проблемы.
  • Condition B: Host group = Production servers - ограничиваем область действия production-хостами.
  • Condition C: Trigger value = Problem - реагируем только на возникновение проблем, не на восстановление.

Для восстановления создайте отдельное действие с условием Trigger value = OK. Это разделит потоки аварийных и информационных сообщений. Теги триггеров позволяют еще точнее фильтровать события: добавьте условие Tag name = alert_channel и Tag value = express, чтобы отправлять в Express только помеченные триггеры.

Настройка операций: шаблоны сообщений и получатели

Вкладка Operations определяет, что и кому отправлять. Создайте операцию:

  1. Нажмите Add в блоке Operations.
  2. В поле Send to user groups выберите группу, члены которой получат уведомления.
  3. В поле Send only to выберите Express_Alerting - ранее созданный медиатип.
  4. В поле Default message оставьте значение по умолчанию или настройте кастомный шаблон.

Шаблон сообщения по умолчанию использует тему действия и тело из медиатипа. Для кастомизации под конкретное действие укажите свой текст в поле Custom message. Полезные макросы для шаблона:

  • {ACTION.NAME} - имя действия.
  • {TRIGGER.NAME} - имя триггера.
  • {TRIGGER.STATUS} - статус: PROBLEM или OK.
  • {HOST.HOST} - техническое имя хоста.
  • {ITEM.VALUE} - значение элемента данных, вызвавшего срабатывание.

Эскалация настраивается через добавление шагов. Нажмите Add в блоке Operations, выберите Step duration - интервал между повторами. Пример: шаг 1 - немедленная отправка дежурному, шаг 2 через 5 минут - отправка всей группе, шаг 3 через 15 минут - отправка руководителю. Каждый шаг может использовать свой медиатип и получателей.

Привязка медиатипа к пользователям Zabbix

Этот шаг замыкает цепочку: пользователь получает уведомления через указанный канал. Без привязки медиатипа к профилю пользователя действия будут выполняться, но сообщения не дойдут до адресата.

Перейдите в Administration → Users, откройте профиль пользователя, вкладка Media. Нажмите Add:

  • Type: выберите Express_Alerting.
  • Send to: укажите ID чата или канала Express, куда должны приходить уведомления этого пользователя.
  • When active: задайте расписание. Типовой вариант: 1-7,00:00-24:00 - круглосуточно. Для дежурных смен настройте интервалы по дням недели и часам.
  • Use if severity: отметьте уровни серьезности, для которых срабатывает этот канал. Рекомендуется выбрать High и Disaster, чтобы не засорять Express информационными сообщениями.

Повторите для каждого пользователя, который должен получать оповещения. Если используете групповую отправку в действии, убедитесь, что у всех членов группы настроен медиатип Express.

Типичные ошибки при настройке алертинга и их решение

За пять лет настройки мониторинга я выделил пять повторяющихся проблем с интеграцией Express и Zabbix. Каждая имеет четкий симптом и метод исправления.

Ошибка аутентификации: проверка токена и прав доступа

Симптом: в логах Zabbix ошибка «401 Unauthorized» или «403 Forbidden». Тестовое сообщение не отправляется.

Причины и решения:

  1. Токен просрочен или отозван. Перевыпустите токен в панели Express и обновите его в заголовке Authorization медиатипа.
  2. Токен передан не в том формате. Заголовок должен быть Authorization: Bearer eyJhbGciOi..., а не Authorization: Token ... или просто токен без префикса.
  3. У бота недостаточно прав в Express. Проверьте, что бот добавлен в целевой чат или канал и имеет разрешение на отправку сообщений.
  4. IP-адрес сервера Zabbix не входит в белый список Express, если такая настройка включена.

Сообщения не приходят: диагностика через логи Zabbix

Симптом: тест медиатипа проходит успешно, но при реальном срабатывании триггера сообщения нет. В интерфейсе Zabbix нет ошибок.

Диагностика:

  1. Проверьте логи Zabbix сервера: tail -f /var/log/zabbix/zabbix_server.log | grep -i express. Ищите строки с «failed to send» или кодами ответа HTTP, отличными от 2xx.
  2. Включите отладку медиатипа: Administration → Media types → Express_Alerting → Debug mode → Enabled. Повторите срабатывание триггера. В логах появится полный дамп запроса и ответа.
  3. Проверьте, что действие действительно сработало: Monitoring → Problems, найдите событие, откройте детали. Если в блоке Actions нет записей - проблема в условиях действия.
  4. Проверьте привязку медиатипа к пользователю: Administration → Users → вкладка Media. Если Send to пустой или содержит неверный ID чата - сообщение уходит в никуда.

Частая причина - неверный формат JSON в теле запроса. Express ожидает конкретные поля. Если вы отправили {"message": "текст"} вместо {"text": "текст"} - сервер возвращает 200, но не доставляет сообщение. Сверьтесь с документацией вашего сервера Express по обязательным полям.

Другие распространенные ошибки:

  • Блокировка сетевых запросов: фаервол между Zabbix и Express блокирует исходящие соединения на порт 443. Проверьте: telnet api.express-notify.example.com 443.
  • Неверные макросы: опечатка в имени макроса, например {EVENT.NAMe} вместо {EVENT.NAME}. Zabbix не подставляет значение, в сообщении остается строка макроса.
  • Отсутствие привязки медиатипа: действие настроено на группу, но ни у одного пользователя в группе не указан медиатип Express. Система молча пропускает отправку.

Проверка всей цепочки: от триггера до уведомления в Express

Финальное тестирование подтверждает, что все компоненты работают вместе. Не ограничивайтесь тестом медиатипа - проверьте полный цикл.

Создайте тестовый триггер на хосте, который точно доступен:

  1. Перейдите в Configuration → Hosts, выберите хост, вкладка Triggers, Create trigger.
  2. Задайте имя «Test Express alerting».
  3. В поле Expression введите условие, которое всегда истинно для теста: {host:item.last()}=0 или используйте функцию nodata() с заведомо малым интервалом.
  4. Установите severity в High, чтобы триггер попал под условия действия.
  5. Сохраните триггер и дождитесь его срабатывания.

Альтернативный метод - ручная генерация события через zabbix_sender: zabbix_sender -z localhost -s "test_host" -k test.key -o 1. Это быстрее, чем ждать срабатывания триггера по расписанию.

После срабатывания проверьте:

  • Monitoring → Problems - событие отображается с правильным severity.
  • В деталях события есть запись о выполненном действии.
  • В чате Express появилось уведомление с корректными данными: именем хоста, триггера, уровнем серьезности.

Для постоянного мониторинга работоспособности алертинга настройте дашборд в Zabbix с виджетами: количество отправленных уведомлений за час, процент ошибок доставки, последние неудачные попытки. Это позволит обнаружить проблему до того, как она приведет к пропуску критического инцидента. Если вы хотите глубже разобраться в тестировании, прочитайте как протестировать алертинг в Zabbix с Express - там описан расширенный сценарий с анализом логов.

Заключение: надежный алертинг без пропущенных событий

Вы настроили медиатип Express, создали действие с фильтрацией по severity и группам хостов, привязали канал к пользователям и проверили всю цепочку. Теперь критические события в Zabbix мгновенно превращаются в уведомления в Express.

Ключевые точки контроля: токен активен и имеет права на отправку, JSON в теле запроса соответствует ожиданиям сервера Express, действие содержит корректные условия и операции, каждый пользователь имеет привязанный медиатип с верным ID чата. При изменении любого из этих компонентов проверяйте цепочку заново.

Перед внедрением в production протестируйте конфигурацию на изолированном хосте. Убедитесь, что эскалация работает по заданному расписанию, а повторные уведомления не создают шум. Дополнительные материалы по теме: интеграция Zabbix и Express для DevOps и настройка триггеров и алертинга через Express.

Поделиться:
Сохранить гайд? В закладки браузера