TL;DR: Telegram заблокирован, уведомления из Zabbix не доходят. Пошаговый гайд: как интегрировать мессенджер Max вместо Telegram. Скрипт вебхука внутри.
Введение
Дисклеймер: На момент написания статьи (Март 2026 года) Telegram заблокирован на территории РФ. Многие компании вынуждены искать альтернативы для рабочих чатов и систем уведомлений.
Раньше всё было просто: Zabbix → Telegram-бот → уведомление в чат. Удобно, бесплатно, работает. Но после блокировки мессенджера эта схема перестала быть надёжной: VPN отваливается, корпоративная политика запрещает обход блокировок, а команда остаётся без критически важных уведомлений.
Нужно было решение, которое:
Работает без VPN на территории РФ
Имеет стабильный API для интеграций
Выбор пал на Max. В этой статье покажу, как я заменил Telegram на Max в связке с Zabbix 7. Официальная документация местами озадачила, поэтому я опишу путь, который оказался проще и привёл к рабочему результату.
Почему именно Max?
Честно — мы не проводили глубоких сравнительных исследований. Главным критерием было время.
Уведомления нужны были «вчера», а Telegram перестал быть надёжным каналом. Смотрели на три варианта:
Вариант | Почему не подошёл |
|---|---|
Mattermost / Rocket.Chat | Нужно разворачивать свои сервера, поддерживать, обновлять. Это лишняя инфраструктура в и без того насыщенный стек. |
VK WorkSpace | Потребовал бы долгих согласований доступа к API и интеграции с корпоративным порталом. |
Почта / SMS | Работает, но медленно. Для критических алертов не подходит. С SMS вообще отдельная история |
Max подошёл как «коробочное» решение:
Российская юрисдикция
Облачная платформа (не нужно поднимать и поддерживать сервера)
Есть HTTP API для ботов (можно интегрировать без костылей)
Это позволило сосредоточиться на самой интеграции с Zabbix, а не на развёртывании и поддержке мессенджера.
Итог: выбрали не потому что «лучший», а потому что быстро внедрить и забыть.
Что понадобится:
Доступ к платформе Max.
Токен бота для авторизации в API.
Доступ к веб-интерфейсу Zabbix 7.x.
Шаг 1: Получение токена бота
Честно: моим путём вы бота не получите по этому я не буду тут рассказывать как я его раздобыл.
Но токен можно получить официально:
- Через VK Business (платформа Max интегрирована с экосистемой VK)
- Только для юридических лиц и организаций
- После подачи заявки и модерации
> 📌 Если вы частное лицо или небольшая команда: возмож��о, стоит рассмотреть альтернативы или использовать промежуточный webhook-прокси.
Что вам нужно в итоге: строка токена для авторизации в заголовке Authorization. Без этого дальнейшая настройка не имеет смысла.
Шаг 2: Определяем Chat ID получателя
Max в веб-версии использует числовые идентификаторы чатов и пользователей. Чтобы узнать ID чата, в который бот будет отправлять сообщения:
Откройте нужный чат в веб-интерфейсе Max.
Посмотрите на адресную строку браузера:
https://web.max.ru/123456Число после
/(в примере123456) — это и есть Chat ID.
Запишите его — он понадобится при привязке медиа-типа к пользователю в Zabbix.
Шаг 3: Создание Media Type в Zabbix
Переходим в веб-интерфейс Zabbix:
Alerts → Media types → Create media type.
Name:
Max MessengerType:
WebhookПереходим на вкладку Webhook.
Скрипт отправки
В поле Script вставляем JavaScript-код. Я уже учёл все подводные камни (авторизация, формат запроса), так что можно копировать:
var MaxMessenger = { apiUrl: null, token: null, to: null, // chat_id или user_id message: null, subject: null, proxy: null, isUser: false, // true = отправляем пользователю, false = в чат sendMessage: function () { //Формируем URL с параметром получателя var param = MaxMessenger.isUser ? 'user_id' : 'chat_id'; var url = MaxMessenger.apiUrl + '/messages?' + param + '=' + encodeURIComponent(MaxMessenger.to); //Тело запроса var payload = { text: (MaxMessenger.subject ? MaxMessenger.subject + '\n' : '') + MaxMessenger.message }; var request = new HttpRequest(); var data = JSON.stringify(payload); if (MaxMessenger.proxy) { request.setProxy(MaxMessenger.proxy); } // Заголовки request.addHeader('Content-Type: application/json; charset=utf-8'); request.addHeader('Accept: application/json'); request.addHeader('Authorization: ' + MaxMessenger.token); // Без "Bearer"! // Логирование Zabbix.log(4, '[Max] POST ' + url); Zabbix.log(4, '[Max] Body: ' + data); var response = request.post(url, data); var status = request.getStatus(); Zabbix.log(4, '[Max] HTTP ' + status + ' | Response: ' + response); if (status >= 200 && status < 300) { return 'OK'; } else { throw 'HTTP ' + status + ': ' + response; } } }; try { var params = JSON.parse(value); // Проверка обязательных параметров ['ApiUrl', 'Token', 'To', 'Subject', 'Message'].forEach(function(p) { if (!params[p]) throw 'Parameter "' + p + '" is missing'; }); MaxMessenger.apiUrl = params.ApiUrl; MaxMessenger.token = params.Token; MaxMessenger.to = params.To; MaxMessenger.subject = params.Subject; MaxMessenger.message = params.Message; // Опционально: флаг отправки пользователю (по умолчанию — чат) if (params.IsUser && params.IsUser.toLowerCase() === 'true') { MaxMessenger.isUser = true; } MaxMessenger.sendMessage(); return 'OK'; } catch (error) { Zabbix.log(4, '[Max ERROR] ' + error); throw 'Sending failed: ' + error + '.'; }
Шаг 4: Настройка параметров (Parameters)
Переходим на вкладку Parameters и добавляем переменные. Имена параметров должны точно совпадать с теми, что используются в скрипте (чувствительно к регистру!).
Name | Value | Описание |
|---|---|---|
| Базовый URL API | |
|
| Токен бота |
Заключение
Интеграция Max Messenger с Zabbix — задача решаемая, и после правильной настройки вы получаете стабильный канал уведомлений, не зависящий от блокировок и VPN.
Что важно запомнить:
Токен бота общий для всех, Chat ID индивидуальный.
Скрипт вебхука легко адаптируется под особенности вашего API.
Всегда включайте логирование на этапе отладки.
Проверяйте связку через
curlперед настройкой в Zabbix.
Надеюсь, этот гайд сэкономит вам несколько часов поиска и экспериментов.
