/Zabbix-Notification-Telegram

Sending notification from Zabbix server to the Telegram

Primary LanguagePythonMIT LicenseMIT

Zabbix-Notification-Telegram

Отправка оповещений из Zabbix в Telegram

Plans

Installation

Configuration

Key Features

  • Отправка графиков и последних значений в одном сообщении
  • Гибкая настройка шаблона в теле сообщения
  • Обработка быстрых команд ботом AppVeyor
  • Отправка показателей по запросу от бота AppVeyor
  • Передача данных из экшена XML разметкой
  • Формирование списка линков в теле сообщения
  • Формирование списка тэгов в теле сообщения
  • Emoji мапинг статуса и важности события
  • Наложение ватермарки на изображение
  • Формирование и обновление кэшфайла (privat, group -> supergroup)

Plans

  • Gitlab CI\CD

Installation

  • Становимся пользователем, от имени которого будет работать скрипт на системном уровне (по-умолчанию zabbix)
sudo su - zabbix
  • Перейдем в директорию
cd /usr/lib/zabbix/alertscripts/
  • С клонируем свежий релиз с GitHub
git clone https://github.com/xxsokolov/Zabbix-Notification-Telegram.git .
  • Создадим виртуальное окружение
virtualenv venv --python=python3

или

python3 -m venv venv
  • Активируем виртуальное окружение
source venv/bin/activate
  • Установим библиотеки
pip install -r .requirements
deactivate
  • Копируем файл конфигурации:
cp zbxTelegram_config.example.py zbxTelegram_config.py
  • Выдаем права
chown -R zabbix:zabbix zbxTelegram.py zbxTelegram_config.py zbxTelegram_files/ 
  • Разрешим выполнять файл скрипта
chmod +x zbxTelegram.py
  • Редактируем конфигурационный файл
vim zbxTelegram_config.py

Configuration

Настройка zbxTelegram_config.py

tg_proxy = Отправка через прокси True/False; по-умолчанию True

tg_proxy_server = Адрес прокси сервера

tg_token = token to access the Telegram API

zabbix_api_url = Путь до Zabbix (бэкслеш '/' в конце обязателен)

zabbix_api_login = Логин пользователя с минимум правами чтения на нужные группы, откуда мы хотим получать оповещения

zabbix_api_pass = Пароль

Настройка Media types

Name: ZNT

Type: Script

Script name: zbxTelegram.py

Script parameters:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

Настройка Actions

  • Default subject

{Problem} {TRIGGER.SEVERITY} {{TRIGGER.SEVERITY}}: {EVENT.NAME}

{Resolved} {TRIGGER.SEVERITY} {{TRIGGER.SEVERITY}} {EVENT.NAME}

{Update} {TRIGGER.SEVERITY} {{TRIGGER.SEVERITY}} {EVENT.NAME}

{Problem} - мапинг значений Problem\Resolved\Update в emoji (config: zabbix_status_emoji_map)

{{TRIGGER.SEVERITY}} - мапинг значений Severity в emoji (config: zabbix_status_emoji_map)

  • Default message

Для настройки оповещения используется XML разметка (Исходные данные Вы найдете в actions.example)

В самом простом рабочем варианте контент из файла actions.example копируется в настройку оповещения, поле Default message

Она состоит из основных секций:

<body>
   <messages>
      Текст сообщения
   </messages>
</body>
<settings> 
       Настройки
</settings>

Тестирование

  • Из консоли
./zbxTelegram.py @username test test

[2019-11-26 11:48:37,723] - PID:73794 - main() - zbxTelegram.py:311 - INFO: Send to @username action: test
[2019-11-26 11:48:37,723] - PID:73794 - main() - zbxTelegram.py:412 - INFO: Connection check passed (http://127.0.0.1/zabbix/)
[2019-11-26 11:48:38,653] - PID:73794 - send_messages() - zbxTelegram.py:290 - INFO: Bot @bot(00000000) send photo to @username (00000000)
  • Из media type

Описание настроек

<graphs></graphs> - прикреплять график (True\False)

<graphlinks>True</graphlinks> - прикрепить ссылку url на History (True\False)

<triggerlinks>True</triggerlinks> - прикрепить ссылку url из триггера (True\False)

<tag>True</tag> - прикрепить теги (True\False)

<graphs_period></graphs_period> - период графика в секундах

<itemid></itemid> - передача itemid {ITEM.ID1}

<triggerid></triggerid> - передача triggerid {TRIGGER.ID}

<eventid></eventid>- передача eventid {EVENT.ID}

<title></title> - заголовок графика {HOST.HOST} - {EVENT.NAME}

<triggerurl></triggerurl> - передача url из триггера {TRIGGER.URL}

<tags></tags> - передача списка тэгов из триггера {EVENT.TAGS}

Нотиф:

Жду всех в Telegram: https://t.me/ZbxNTg