Уведомления от Zabbix в Telegram

обновлено 4.10.2021

Создать бота, описано тут

Скачиваем скрипты от сюда https://github.com/ableev/Zabbix-in-Telegram

Кладем скрипт zbxtg.py в каталог /usr/lib/zabbix/alertscripts, каталог может отличатся, можно проверить значение переменной AlertScriptsPath в конфиге zabbix_server.conf

Создаем скрипт zbxtg_settings.py с содержимым из файла zbxtg_settings.example.py

Заменяем в нем на наши такие данные как:

(в переменной zbx_server url пишем без /zabbix — для 4.х версии проверено)

раскоментироват нужную версию Zabbix

устанавливаем python requests, учитываем вашу текущую версию python -V

Идем в Администрирование — Способы оповещений, жмем кнопку «Создать способ оповещений». В поле «Имя» вводим название способа оповещения. В поле «Тип» нужно выбрать «Скрипт». В поле «Имя скрипта» нужно указать имя файла-скрипт, без пути; например, zbxtg.py В поле «Параметры скрипта» нужно нажать «Добавить» 3 раза и ввести в появившиеся поля {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}. Пример:

Идем в Администрирование — Пользователи — выбираем своего пользователя — Оповещения — Добавить. В поле «Тип» выбираем только что созданный способ оповещения, например, Telegram Bot. В поле «Отправлять на» вводим свой Telegram ID. Остальные поля заполняем на свое усмотрение.

окно оповещения нового:

Идем в Настройка — Действия, в поле «Источник событий» выбираем «Триггеры» и жмем «Создать действие». На закладках «Действие» и «Условие» заполняем поля по своему усмотрению. Я в полях «Сообщение по умолчанию» и «Сообщение о восстановлении» указываю такое:

у меня уже создан «Telegram example», его содержимое:

в Zabbix 3.4 выглядит так

Тема:

Сообщение по-умолчанию:

Тема восстановления:

Сообщение о восстановление:

На закладке «Операции» жмем «Новый». Выбираем пользователя. В поле «Отправить только через» выбираем созданный на шаге 4 способ оповещения, например, Telegram Bot. Жмем «Добавить» и еще раз «Добавить».

 

Результат успешной работы выглядит примерно так:

После обновления блока emoji_map и добавления {{{TRIGGER.SEVERITY}}} / {{OK}} в «Default subject» в Action, а также в «Default message» переменной zbxtg;single_message сообщения группируються и им добавляються emoji статусов проблемы:

Групповые уведомления

Для групповых уведомлений необходимо создать группу в телеграм в которую добавить бота, а также сделать следующую настройку в zabbix

Создать «Способ оповещения»:

а также добавить в пользователя данный способ оповешения:

в поле «Отправить на» обязательно указать Имя группы (не ID !!!):

 

Annotations

Проверить работу скрипта можно следующими запросами:

 

Проверить работу бота в чате, предварительно бота необходимо добавить в ваш чат:

 

Известные проблемы, если перестали отображаться графики в сообщениях, для начала необходимо проверить код ответа:

веный ответ:

не верный ответ:

Причиной был файл .htaccess в каталоге с zabbix’ом в котором закрыт доступ к zabbix  через web авторизацию.

Еще одна возможная причина, по которой уведомления от telegram могут приходить без графиков — отсутствие верного логина пароля в файле конфигурации скрипта формируещего графики:

переменные:

Это также будет причиной вот такого рода ошибок:

 

!!!! Внимание !!!!

Для 4-й версии не забываем в настройках раскоментить параметр:

 

Проверено на версии 5.0 — работает. Обновление zabbix сервера было выполнено с 4.4 на 5.0

 

При чистой установке zabbix 5.0 версии необходимо включить HTTP  Аутентификация
Администрирование -> Аутентификация -> Настройки HTTP:

Поставить галку в чекбоксе: «Активация HTTP аутентификации»
Диалог входа в систему по-умолчанию: «Диалог входа в систему Zabbix»

8 thoughts on “Уведомления от Zabbix в Telegram

  1. Обновлено.
    Добавлено как сделать группировку сообщений, а также как включить emoji в зависимости от статуса проблемы.

  2. Привет, может подскажешь?

    Traceback (most recent call last):
    File «/usr/lib/zabbix/alertscripts/zbxtg.py», line 888, in
    main()
    File «/usr/lib/zabbix/alertscripts/zbxtg.py», line 847, in main
    message_id = tg.result[«result»][«message_id»]
    KeyError: ‘message_id’

    это после добавления zbxtg;single_message в конец, и оповещения не идут совсем. что не так? (

    1. Привет, убедись, что версия скрипта используется последняя, также загрузи его куда нибудь и скинь ссылку я посмотрю что за версия внутри. Также покажи какая версия python используется на сервере.

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

  3. Добрый день, подскажите какие данные мы прописываем в zbxtg_settings.py ? Только токен бота, адрес чата и прокси? При запуске скрипка получаю это, из самого же zabbix ничего не приходит.

    appliance@zabbix:/usr/lib/zabbix/alertscripts$ python zbxtg.py
    Hi. You should provide at least three arguments.
    1. Read main page and/or wiki: https://github.com/ableev/Zabbix-in-Telegram + https://github.com/ableev/Zabbix-in-Telegram/wiki
    2. Public Telegram group (discussion): https://t.me/ZbxTg
    3. Public Telegram channel: https://t.me/Zabbix_in_Telegram
    4. Try dev branch for test purposes (new features, etc): https://github.com/ableev/Zabbix-in-Telegram/tree/dev
    appliance@zabbix:/usr/lib/zabbix/alertscripts$

    1. внимательно читайте мануал:
      — мы указываем tg_key (api key) бота телеграмовского.
      — пишем адрес zabbix сервера в переменной zbx_server
      — логин пользователя в zabbix, рекомендуеться создавать отдельного, переменная — zbx_api_user
      — пароль для этого пользователя в zabbix — переменная zbx_api_pass

      пример моего конфига:

      https://pastebin.com/raw/5JDzX2ga

Добавить комментарий

Ваш адрес email не будет опубликован.