Уведомления Zabbix в Telegram: пошаговая настройка
Обновлено: октябрь 2026
Мониторинг выполняет свою работу только тогда, когда о проблеме узнаёт человек — быстро и там, куда он реально смотрит. Для небольшой компании таким местом чаще всего оказывается Telegram. В этой статье — полная цепочка доставки уведомлений Zabbix в Telegram: бот, идентификатор чата, способ оповещения, действие и проверка. Команды и названия разделов интерфейса приведены для линеек Zabbix 6.0 LTS и 7.0 LTS.
ВАШЕЙ ИНФРАСТРУКТУРЫ
Как устроена доставка уведомлений
Zabbix не отправляет сообщения в мессенджеры напрямую. Между триггером и телефоном администратора стоит цепочка из четырёх звеньев, и настройка — это по очереди каждое из них:
Бот — программа в Telegram, через которую сообщения и уходят: у неё есть токен, то есть ключ доступа к Telegram Bot API. Чат — адресат сообщения: личный чат администратора или общая группа, у каждого есть числовой идентификатор chat_id. Способ оповещения в Zabbix — канал доставки; для Telegram это вебхук, который обращается к Bot API по HTTPS. Действие — правило, которое связывает триггеры с людьми: при каких условиях, кому и с каким текстом слать.
Порядок именно такой — от краёв к середине: сначала адресат и его идентификатор, потом канал, потом правила. Проверка на каждом шаге занимает минуту и избавляет от классической ситуации «настроили всё сразу, не работает — неизвестно что».
Создать бота
Боты в Telegram создаются не в приложении, а у специального
бота-распорядителя @BotFather. Команда /newbot,
два ответа на вопросы — имя бота, которое видят люди, и
имя пользователя, которое обязано заканчиваться на
bot, — и бот существует. BotFather выдаёт токен —
ключ доступа к Bot API от имени этого бота; это длинная строка
вида «число:набор символов», например
110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw.
/newbot
# BotFather спросит имя и имя пользователя, затем выдаст токен:
# Use this token to access the HTTP API:
# 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw
Токен стоит хранить так же, как пароль: у кого он есть, тот
может писать в чаты от имени бота. Если токен попал в чужие
руки, BotFather умеет перевыпускать его командой
/revoke — у того же бота будет новый ключ.
Отдельное решение этого шага — личный чат или группа. Личный чат проще и уместен, когда отвечает один человек. Группа практичнее даже для одного администратора: история сообщений остаётся в ней, а дублёра достаточно добавить в участники — настраивать ничего заново не придётся.
Узнать chat_id
Адресатом сообщения в Bot API является не имя пользователя, а числовой идентификатор чата. Самый прямой способ его узнать — обратиться к самому Telegram: боту нужно сначала написать (в группе — добавить бота и написать в неё), а затем запросить обновления у Bot API. Запрос выполняется из любого браузера:
https://api.telegram.org/bot<ТОКЕН>/getUpdates
# в ответе среди полей каждого обновления — объект chat:
# "chat":{"id":987654321,"first_name":"...","type":"private"}
# для групп id отрицательный:
# "chat":{"id":-1001234567890,"title":"Дежурные","type":"supergroup"}
Два практических замечания. Первое: у ботов в группах включён
режим приватности — в обновления попадают только команды, а
обычные сообщения нет. Чтобы группа появилась в ответе
getUpdates, достаточно отправить в неё любую
команду вида /any@имя_бота — или отключить режим
приватности у BotFather командой /setprivacy.
Второе: если список обновлений пуст, напишите боту ещё раз —
getUpdates показывает только недавние события.
Полученный идентификатор — это половина адреса доставки. Записываем: он понадобится дважды — в Zabbix и при проверке. Идентификаторы групп имеют смысл хранить вместе с назначением («дежурные», «руководство») — когда каналов станет несколько, без такой пометки легко перепутать, куда какой поток должен приходить.
Добавить способ оповещения в Zabbix
В Zabbix за доставку во внешние системы отвечает способ оповещения (раздел «Оповещения → Способы оповещений»). Для Telegram тип — вебхук: Zabbix сам выполнит HTTPS-запрос к Bot API и передаст в него текст сообщения. Готовый вебхук для Telegram опубликован самим Zabbix в официальном репозитории интеграций: он скачивается файлом и импортируется в Zabbix без ручного написания скрипта. У импортированного способа оповещения два собственных параметра — токен бота и необязательный адрес HTTP-прокси; идентификатор чата к способу не привязывается, он задаётся для каждого получателя позже.
До сохранения стоит нажать кнопку «Тест»: способ оповещения
умеет отправлять пробное сообщение прямо из окна настройки.
Три частые причины, по которым тест не проходит, — опечатка в
токене, не тот chat_id и закрытый исходящий HTTPS с сервера
Zabbix. Последнее стоит проверить отдельно: сервер Zabbix
обращается к api.telegram.org по порту 443, и
именно с сервера, а не с рабочей станции, откуда открыт
интерфейс. Если исходящие соединения в сети ограничены,
выручает параметр прокси — вебхук умеет ходить через него.
# проверка достижимости Bot API с самого сервера Zabbix
curl -s "https://api.telegram.org/bot<ТОКЕН>/getMe"
# ответ вида {"ok":true,"result":{"id":110201543,"is_bot":true,...}}
# означает: сеть открыта и токен действителен
Там же, в настройках способа оповещения, живут шаблоны
сообщений — тексты для событий разных типов. Для начала
достаточно стандартных: в них подставляются макросы
{ALERT.SUBJECT} и {ALERT.MESSAGE},
которые действие наполнит по своему шаблону.
Привязать получателя и создать действие
Способ оповещения сам по себе никому не пишет: у каждого пользователя Zabbix в профиле есть вкладка «Оповещения», где перечислены его каналы. Добавляем Telegram, в поле «Отправлять на» вписываем chat_id из второго шага — для группы со знаком минус. Здесь же можно ограничить важность: например, доставать человека только по «Высокой» и «Чрезвычайной», если предупреждающие события решено оставлять почте.
Последнее звено — действие (раздел «Оповещения → Действия»). Условие по умолчанию — «проблема» у узлов из группы; операции — кому и в каком порядке слать. Здесь же настраивается эскалация: если проблема не закрыта, действие повторяется через заданное время, а следующим шагом уходит дублёру. Текст сообщения задаётся шаблоном операции — и это место, где стоит потратить десять минут: сообщение, в котором видны имя проблемы, узел, длительность и ссылка на событие, читается в чате мгновенно, без открытия интерфейса.
# шаблон операции для событий «Проблема» (в тексте действия)
Проблема: {TRIGGER.NAME}
Узел: {HOST.NAME}
Важность: {TRIGGER.SEVERITY}
Длительность: {EVENT.AGE}
Подробнее: {TRIGGER.URL}
Проверять цепочку лучше всего честным срабатыванием: на тестовом узле останавливается агент или занижается порог заведомо безопасного триггера. Кнопка «Тест» на шаге третьем проверила канал; действие проверяет весь путь — от триггера до телефона.
Типовые проблемы и что с ними делать
- «Тест проходит, боевые сообщения не приходят». Канал исправен, но действие не выбрало получателя: проверьте вкладку «Оповещения» в профиле пользователя и условия действия — чаще всего не совпадает группа узлов или важность.
- «Chat id: Bad Request». Идентификатор группы указан без минуса или с лишним пробелом. Идентификатор нужно копировать из ответа getUpdates целиком.
- «Cannot connect to api.telegram.org». Сервер Zabbix не имеет исходящего HTTPS. Проверка curl-ом с самого сервера показывает это сразу; лечится правилом файрвола или прокси в настройках вебхука.
- Шторм триггеров. У Bot API есть ограничения на частоту сообщений в один чат, и при лавине срабатываний часть сообщений задерживается. Лавину гасят в Zabbix: порогами, средними за интервал вместо мгновенных значений и осмысленным набором триггеров — об этом подробнее в нашей статье о первом контуре мониторинга.
- Уведомления в чате, который никто не читает. Формально цепочка работает, фактически мониторинга нет. Канал доставки должен совпадать с тем, где дежурный проводит день, — это решение организационное, и оно важнее любого технического шага.
И отдельная строка — сами копии. Telegram отлично доносит «копия не создалась», но не отвечает на вопрос, восстановится ли копия, которая создалась. Этому посвящена наша статья о мониторинге резервных копий.
Частые вопросы
Почему Telegram, а не почта?+
Дело не в выборе мессенджера, а в месте, куда человек смотрит непрерывно. Почта хороша для предупреждающих событий и сводок; критичные — там, где дежурный заметит их за минуту. Zabbix позволяет совмещать каналы по важности событий.
Безопасно ли хранить токен бота в Zabbix?+
Доступ к интерфейсу Zabbix у вас уже защищён — токен хранится там же, где пароли способов оповещения любого другого канала. Риск появляется, если токен скопирован ещё где-то: тогда его стоит перевыпустить у BotFather.
Можно ли слать в разные чаты по разным узлам?+
Да: у каждого получателя свой chat_id в профиле, а действие выбирает, кому слать, по условиям — группе узлов, важности, времени суток. Для двух-трёх маршрутов одного действия достаточно.
Подойдёт ли это для Zabbix 5.0 или 5.4?+
Механика вебхуков появилась раньше и в этих версиях работает так же; отличаются только названия разделов интерфейса. Но для новой настройки разумнее сразу брать LTS-линейку 6.0 или 7.0 — у них длинная поддержка без смены механики между minor-версиями.
Один бот на компанию или отдельный для каждого администратора?+
Для доставки достаточно одного бота: адресатом выступает чат, а не человек. Отдельные боты оправданы, если хочется развести потоки — например, критичные события и предупреждения — по разным группам с разным составом участников.
Куда приходят сообщения, если у Telegram авария?+
Ни один канал доставки не стоит один: вебхук отмечает неудачную попытку, Zabbix повторяет отправку по своей логике повторов, а резервным каналом остаётся почта. Дублирование канала — нормальная практика для критичных событий, а не избыточность.
Связанные материалы
Уведомления — последнее звено мониторинга, но настраивать его имеет смысл вместе с первым контуром проверок: что мониторить в небольшой компании и как не утонуть в шуме, — в нашей статье о Zabbix для небольшой компании.
Постановка мониторинга под ключ — от контура проверок до уведомлений и сопровождения порогов — направление мониторинга и наблюдаемости.