Поиск по сайту
Интересуешься IT и системным администрированием? Подпишись на наш канал, где мы делимся инсайдами, новостями и практическими советами! Прокачай свои навыки вместе с нами!
Как настроить оповещения Zabbix в MAX
В последние годы многие администраторы в России столкнулись с одной и той же проблемой — нестабильной работой Telegram. Задержки доставки сообщений, периодические недоступности и общее ухудшение качества соединения делают его не самым надежным каналом для критичных уведомлений мониторинга. А когда речь идет о системе вроде Zabbix, где важна каждая минута, такие риски становятся неприемлемыми.
Именно поэтому возникает логичный вопрос: какую альтернативу использовать для оперативных оповещений? Одним из наиболее интересных и перспективных решений стал российский мессенджер MAX. Он стабильно работает внутри страны, поддерживает API для интеграций и отлично подходит для построения системы уведомлений.
В этой статье разберём, как настроить отправку оповещений из Zabbix в MAX с помощью Webhook — простого, надежного и удобного способа интеграции без лишних скриптов и сложной логики.
Онлайн-курс: Zabbix 6. Мониторинг IT инфраструктуры предприятия.
Курс предлагает глубокое изучение Zabbix 6 и охватывает все ключевые аспекты: от установки и конфигурации до продвинутого мониторинга и автоматизации. Курс подходит как для начинающих, так и для опытных администраторов.
Содержание:
- Создание бота в MAX и получение токена
- Создание чата в MAX и добавление бота
- Получение chat_id для отправки сообщений
- Настройка Webhook в Zabbix для отправки уведомлений в MAX
- Настройка шаблонов сообщений (Problem и Recovery)
- Настройка пользователя и способа оповещений в Zabbix
- Создание Action для отправки уведомлений
- Проверка работоспособности уведомлений
- Заключение
Создание бота в MAX и получение токена
Для отправки уведомлений из Zabbix в MAX нам понадобится чат-бот. Именно от имени этого бота Zabbix будет отправлять сообщения о проблемах и восстановлении сервисов.
Важно учитывать особенности платформы: на текущий момент создание чат-ботов в MAX доступно только для юридических лиц и индивидуальных предпринимателей. Физические лица без верифицированной организации не смогут получить доступ к API и создать бота. Поэтому, если у вас нет собственной организации, потребуется воспользоваться доступом коллег или корпоративной учётной записью.
После получения доступа необходимо перейти на платформу разработчиков MAX и открыть раздел Чат-боты. Далее нажмите кнопку Создать и заполните базовую информацию:
- название бота;
- описание (по желанию);
- аватар (опционально).
После создания бот становится доступен для дальнейшей настройки. В рамках одной организации можно создать несколько ботов (обычно до 5 чат-ботов), что позволяет разделять их по задачам — например, отдельный бот для мониторинга, отдельный для уведомлений пользователей и т.д.
Следующий шаг — получение токена. Для этого:
- Откройте созданного бота;
- Перейдите во вкладку Интеграция;
- Нажмите Получить токен;
- Скопируйте полученное значение.
Токен представляет собой строку примерно следующего вида:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib3QiLCJpYXQiOjE3MDAwMDAwMDB9.XyZ123ExampleTokenPartAbc456
Этот токен используется для авторизации при отправке сообщений через API MAX. В дальнейшем мы укажем его в настройках Webhook в Zabbix.
Важно: токен — это конфиденциальная информация. Он даёт полный доступ к управлению ботом через API, поэтому:
- не публикуйте его в открытых источниках;
- не вставляйте в скриншоты;
- не передавайте третьим лицам;
- при подозрении на утечку обязательно перевыпустите токен.
После получения токена можно переходить к следующему этапу — созданию чата и подготовке бота к отправке уведомлений.
Создание чата в MAX и добавление бота
После создания бота и получения токена необходимо подготовить чат, в который будут отправляться уведомления из Zabbix. Это может быть как групповой чат (рекомендуется), так и личный диалог с ботом.
Создание чата
Откройте приложение MAX и создайте новый чат:
- нажмите + и выберите пункт меню Создать группу;
- при необходимости добавьте участников (администраторов, инженеров и т.д.);
- укажите название, например: Zabbix Monitoring или Zabbix Alerts;
- При желании установите аватарку.
Добавление бота в чат
После создания чата необходимо добавить в него ранее созданного бота:
- Откройте чат и нажмите по его названию;
- Выбирите пункт Участники
- Нажмите Добавить участника;
- Найдите вашего бота по имени, к примеру Zabbix;
- Добавьте его в чат.
Важный момент
После добавления бота обязательно отправьте в чат любое сообщение, например: test
Это необходимо для того, чтобы чат появился в API MAX и бот «увидел» его. Без этого шага дальнейшая настройка может не сработать.
Теперь можно переходить к следующему шагу — получению chat_id, который потребуется для настройки отправки уведомлений из Zabbix.
Получение chat_id для отправки сообщений
После создания чата и добавления в него бота необходимо получить chat_id — уникальный идентификатор чата, который используется при отправке сообщений через API MAX. Без него Zabbix не сможет понять, куда именно отправлять уведомления.
Как получить chat_id
Получение chat_id выполняется через API MAX. Для этого можно воспользоваться PowerShell, curl или любым HTTP-клиентом.
Вариант для Windows
В PowerShell используйте следующую команду:
Invoke-WebRequest -Uri "https://platform-api.max.ru/chats" `
-Headers @{Authorization="ВАШ_ТОКЕН"}
Чтобы вывести только содержимое ответа (JSON), используйте:
(Invoke-WebRequest -Uri "https://platform-api.max.ru/chats" `
-Headers @{Authorization="ВАШ_ТОКЕН"}).Content
Вариант для Linux / macOS
curl -X GET "https://platform-api.max.ru/chats" \
-H "Authorization: ВАШ_ТОКЕН"
В ответ вы получите JSON со списком чатов, где присутствует бот:
StatusCode : 200
StatusDescription : OK
Content : {"chats":[{"chat_id":-73905479971513,"type":"chat","status":"active","title":"Zabbix Monitoring","i
con":{"url":"https://i.oneme.ru/i?r=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib3QiLCJpYXQiOjE3MDAwMDAwMDB9.XyZ123ExampleTokenPartAbc456
MW...
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Vary: Accept-Encoding
...
Из ответа нам потребуется значение: chat_id
В данном примере: -73905479971513
Обратите внимание: у групповых чатов chat_id обычно начинается с минуса (-) — это нормально, его нужно указывать полностью.
Возможные проблемы
Если список чатов пустой или нужный чат не отображается
- убедитесь, что бот добавлен в чат;
- проверьте, что в чат было отправлено хотя бы одно сообщение;
- повторите запрос через API.
Настройка Webhook в Zabbix для отправки уведомлений в MAX
После того как у нас есть токен бота и chat_id, можно переходить к настройке отправки уведомлений из Zabbix. Мы будем использовать встроенный механизм Webhook, который позволяет отправлять HTTP-запросы без использования внешних скриптов.
Создание Media type
Откройте в Zabbix:
Alerts → Media types
Нажмите Create media type и заполните параметры:
- Name: MAX
- Type: Webhook
Настройка параметров
В блоке Parameters добавьте следующие параметры:
- Token: ВАШ_ТОКЕН
- ChatId: ВАШ_CHAT_ID
- Subject: {ALERT.SUBJECT}
- Message: {ALERT.MESSAGE}
- Severity: {EVENT.SEVERITY}
Параметр Severity мы используем дополнительно для обработки уровня важности внутри скрипта.
Настройка скрипта Webhook
В поле Script вставьте следующий код:
try {
var params = JSON.parse(value);
if (!params.Token) {
throw 'MAX webhook error: Token is empty.';
}
if (!params.ChatId) {
throw 'MAX webhook error: ChatId is empty.';
}
// Перевод уровня важности
var severityMap = {
"Not classified": "⚪ Не классифицировано",
"Information": "🔵 Информация",
"Warning": "🟡 Предупреждение",
"Average": "🟠 Средняя",
"High": "🔴 Высокая",
"Disaster": "💥 Авария",
"Не классифицировано": "⚪ Не классифицировано",
"Информация": "🔵 Информация",
"Предупреждение": "🟡 Предупреждение",
"Средняя": "🟠 Средняя",
"Высокая": "🔴 Высокая",
"Авария": "💥 Авария"
};
var severity = params.Severity || '';
var severityText = severityMap[severity] || severity;
var subject = params.Subject || '';
var message = params.Message || '';
if (severity) {
subject = subject.replace(severity, severityText);
message = message.replace(severity, severityText);
}
var text = '';
if (subject) {
text += subject + '\n';
}
if (message) {
text += message;
}
var url = 'https://platform-api.max.ru/messages?chat_id=' + encodeURIComponent(params.ChatId);
var payload = JSON.stringify({
text: text,
format: "html"
});
var req = new HttpRequest();
req.addHeader('Content-Type: application/json');
req.addHeader('Accept: application/json');
req.addHeader('Authorization: ' + params.Token);
var response = req.post(url, payload);
var status = req.getStatus();
Zabbix.log(4, '[MAX webhook] HTTP status: ' + status);
Zabbix.log(4, '[MAX webhook] Response: ' + response);
if (status < 200 || status >= 300) {
throw 'MAX webhook error: HTTP ' + status + '. Response: ' + response;
}
return 'OK';
}
catch (error) {
Zabbix.log(3, '[MAX webhook] Failed: ' + error);
throw 'Sending failed: ' + error;
}
После добавления скрипта, нажимаем кнопку Add
Проверка Webhook
После сохранения Media type можно выполнить тест:
- Найдите созданный тип MAX;
- Нажмите Test;
- И ещё раз нажмите Test
Важно: Для работы Webhook сервер Zabbix должен иметь доступ в интернет по порту TCP 443, до адреса: https://platform-api.max.ru
Если всё настроено правильно, сообщение появится в чате MAX.
Настройка шаблонов сообщений (Problem и Recovery)
После настройки Webhook в Zabbix необходимо определить, какие именно сообщения будут отправляться в MAX при возникновении проблемы и её устранении. Для этого используются шаблоны сообщений (Message templates), которые позволяют гибко управлять содержимым уведомлений.
Откройте ранее созданный Media type: Alerts → Media types → MAX
Перейдите во вкладку Message templates и добавьте два шаблона:
- для события Problem (возникновение проблемы);
- для события Problem recovery (восстановление).
Шаблон для Problem
Нажмите Add и заполните:
Message type: Problem
Subject:
Message:
Шаблон для Recovery
Добавьте второй шаблон:
Message type: Recovery
Subject:
Message:
На данном этапе у вас:
- настроены шаблоны уведомлений для проблем и восстановления;
- сообщения имеют удобный и читаемый формат;
- используется единый стиль оформления.
Теперь осталось привязать способ уведомлений к пользователю и настроить действия (Actions), чтобы сообщения начали отправляться автоматически.
Настройка пользователя и способа оповещений в Zabbix
После настройки Webhook и шаблонов сообщений необходимо указать, кому именно Zabbix будет отправлять уведомления. В Zabbix это реализуется через пользователей и их способы оповещений (Media).
Перейдите в раздел Administration → Users
Вы можете:
- использовать существующего пользователя (например, администратора);
- или создать отдельного пользователя под уведомления (например, max.bot).
В большинстве случаев достаточно добавить новый способ оповещения существующему пользователю.
Откройте нужного пользователя и перейдите во вкладку Media, затем нажмите Add.
Заполните параметры:
- Type: MAX (тот Media type, который мы создали ранее)
- Send to: любое значение, например: max. (Для Webhook это поле формальное и не используется)
- When active: 1-7,00:00-24:00. (Уведомления круглосуточно).
- Use if severity: отметьте все уровни (или только нужные). Обычно оставляю только уведомления с уровнями серьёзности Высокий и Катастрофа.
- Enabled: включено
Сохраните настройки.
Важный момент: Даже если Webhook уже настроен, без привязки к пользователю уведомления отправляться не будут.
Zabbix всегда отправляет оповещения конкретным пользователям или группам пользователей.
Рекомендации
- Если у вас уже настроены уведомления в Telegram или другие каналы — можно оставить их как резервный способ.
- Один пользователь может иметь сразу несколько способов оповещений (например, Telegram + MAX).
Создание Action для отправки уведомлений
На предыдущих этапах мы настроили Webhook, шаблоны сообщений и указали пользователю способ оповещений. Теперь необходимо определить когда и при каких условиях Zabbix должен отправлять уведомления. За это отвечает механизм Actions.
Перейдите в раздел: Alerts → Actions → Trigger actions
Нажмите Create action.
Основные настройки
Во вкладке Action задайте:
- Name: Send to MAX
- Conditions: Если вы хотите получать уведомления по всем событиям — оставьте условия пустыми. Если необходимо ограничить отправку (например, только для High/Disaster или определённых хостов), здесь можно задать фильтры.
Настройка отправки при проблеме
Перейдите во вкладку Operations и нажмите Add.
Заполните:
- Operation type: Send message
- Send message to user groups: выберите пользователя или группу, которым вы добавили способ оповещений MAX
- Send only to: MAX
Сохраните операцию.
Настройка отправки при восстановлении
Перейдите во вкладку Recovery operations и нажмите Add.
Заполните аналогично:
- Send message to user groups: тот же пользователь или группа
- Send only to: MAX
Сохраните.
При необходимости
Если Action настроен, но уведомления не приходят:
- проверьте, есть ли у пользователя настроенный Media type;
- убедитесь, что условия Action выполняются;
- проверьте журнал уведомлений в разделе: Reports → Notifications
Проверка работоспособности уведомлений
После выполнения всех настроек важно убедиться, что интеграция действительно работает и уведомления корректно отправляются в MAX.
Наиболее корректный способ — проверить отправку через настоящий триггер.
Например, можно временно сгенерировать проблему и остановить службу Zabbix:
Windows:
net stop "Zabbix Agent"
Linux:
systemctl stop zabbix-agent
Через некоторое время (обычно 1–2 минуты) в Zabbix сработает триггер, и вы должны получить уведомление в MAX.
Проверка восстановления
После этого верните сервис обратно:
Windows:
net start "Zabbix Agent"
Linux:
systemctl start zabbix-agent
После восстановления состояния вы получите второе сообщение — о том, что проблема устранена.
Если уведомления не приходят, проверьте:
- Есть ли событие в Zabbix: Monitoring → Problems
- Журнал отправки уведомлений: Reports → Notifications
- Логи сервера Zabbix: tail -f /var/log/zabbix/zabbix_server.log
Частые проблемы
- сервер Zabbix не имеет доступа к platform-api.max.ru (порт 443);
- неверный Token или ChatId;
- пользователь не имеет настроенного Media type;
- Action настроен некорректно или не срабатывает по условиям.
Заключение
В этой статье мы пошагово разобрали настройку отправки уведомлений из Zabbix в мессенджер MAX — от создания бота и получения токена до настройки Webhook, шаблонов сообщений и правил отправки.
На практике такой подход позволяет получить:
- стабильный канал уведомлений, не зависящий от ограничений и замедлений;
- простую интеграцию без внешних скриптов и сложной инфраструктуры;
- удобные и читаемые сообщения с форматированием и нормализацией уровней важности.
Использование Webhook делает решение гибким: при необходимости вы легко сможете доработать формат сообщений, добавить фильтрацию по уровню серьёзности или разделить уведомления по разным чатам.
MAX в данном сценарии выступает как полноценная альтернатива Telegram для корпоративных уведомлений — особенно в условиях, когда стабильность и скорость доставки сообщений критически важны.
После выполнения всех шагов вы получаете готовую и надёжную систему оповещений, которая позволяет оперативно реагировать на проблемы в инфраструктуре и не пропускать важные события мониторинга.
Вам понравилась эта статья? Тогда вам, скорее всего, будет интересна другая полезная статья Как массово добавить хосты в Zabbix из Excel через API.
Интересуешься IT и системным администрированием? Подпишись на SysAdminHub в Телеграмм или Макс, чтобы узнавать обо всем первым!
Статья была полезна? Поддержи автора, и благодаря твоей помощи новые материалы будут выходить еще чаще:
