Вы настраиваете мониторинг в 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 передает в заголовке каждого запроса. Процесс получения:
- Войдите в панель управления Express.
- Перейдите в раздел «Интеграции» или «API».
- Создайте новое приложение или бота. Выберите тип «Webhook».
- Скопируйте сгенерированный токен. Он отображается только один раз - сохраните его в защищенном месте.
- Запишите 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 и подтверждение доставки. Если тест не проходит:
- Проверьте токен: скопирован ли он полностью, не истек ли срок действия.
- Проверьте сетевую доступность: выполните
curl -X POST https://api.express-notify.example.com/v1/sendс сервера Zabbix. - Проверьте формат JSON: лишние запятые, незакрытые скобки, неверные имена полей ломают запрос.
- Включите отладку медиатипов в 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 определяет, что и кому отправлять. Создайте операцию:
- Нажмите Add в блоке Operations.
- В поле Send to user groups выберите группу, члены которой получат уведомления.
- В поле Send only to выберите Express_Alerting - ранее созданный медиатип.
- В поле 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». Тестовое сообщение не отправляется.
Причины и решения:
- Токен просрочен или отозван. Перевыпустите токен в панели Express и обновите его в заголовке Authorization медиатипа.
- Токен передан не в том формате. Заголовок должен быть
Authorization: Bearer eyJhbGciOi..., а неAuthorization: Token ...или просто токен без префикса. - У бота недостаточно прав в Express. Проверьте, что бот добавлен в целевой чат или канал и имеет разрешение на отправку сообщений.
- IP-адрес сервера Zabbix не входит в белый список Express, если такая настройка включена.
Сообщения не приходят: диагностика через логи Zabbix
Симптом: тест медиатипа проходит успешно, но при реальном срабатывании триггера сообщения нет. В интерфейсе Zabbix нет ошибок.
Диагностика:
- Проверьте логи Zabbix сервера:
tail -f /var/log/zabbix/zabbix_server.log | grep -i express. Ищите строки с «failed to send» или кодами ответа HTTP, отличными от 2xx. - Включите отладку медиатипа: Administration → Media types → Express_Alerting → Debug mode → Enabled. Повторите срабатывание триггера. В логах появится полный дамп запроса и ответа.
- Проверьте, что действие действительно сработало: Monitoring → Problems, найдите событие, откройте детали. Если в блоке Actions нет записей - проблема в условиях действия.
- Проверьте привязку медиатипа к пользователю: 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
Финальное тестирование подтверждает, что все компоненты работают вместе. Не ограничивайтесь тестом медиатипа - проверьте полный цикл.
Создайте тестовый триггер на хосте, который точно доступен:
- Перейдите в Configuration → Hosts, выберите хост, вкладка Triggers, Create trigger.
- Задайте имя «Test Express alerting».
- В поле Expression введите условие, которое всегда истинно для теста:
{host:item.last()}=0или используйте функциюnodata()с заведомо малым интервалом. - Установите severity в High, чтобы триггер попал под условия действия.
- Сохраните триггер и дождитесь его срабатывания.
Альтернативный метод - ручная генерация события через 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.