#

Zabbix Notification Telegram

Нотификатор оповещений в Telegram для Zabbix.
Легкая установка, гибкая настройка, информативные сообщения.

Popular на www.zabbix.com и share.zabbix.com
##

🔴 Проект закрыт. This project is deprecated. 🔴
Go to -> https://t.me/ZbxNTg/4241 * [Возможности](#возможности) * [Планы](#планы) * [С чего начать](#с-чего-начать) * [Установка из source](#установка-из-source-git-requires) * [Создаем первое оповещение](#создаем-первое-оповещение) * [Получаем API token](#получаем-api-token) * [Настраиваем нотификатор](#настраиваем-нотификатор) * [Конфигурационный файл](#конфигурационный-файл) * [XML разметка](#xml-разметка) * [Тэги ZNTSettings](#тэги-zntsettings) * [Логирование](#логирование) * [F.A.Q.](#faq) * [Последние значимые изменения](#последние-значимые-изменения) * [Помощь](#помощь) ## Возможности - Графики, информативные заголовки, ссылки1, тэги2 и упоминания объединены в **одно сообщение**. - Формирование и обновление cash файла (privat, group, group -> supergroup)3 - Гибкая настройка через конфигурационный файл, XML разметку в действиях триггеров и Trigger Tags4 - Маппинг Emoji статуса и важности события. - Наложение watermark на изображение. - Обьединение графиков в альбом. ## Планы - Обработка быстрых команд ботом AppVeyor - Отправка метрик по запросу от бота AppVeyor ## С чего начать Для работы потребуется Python 3+ и Zabbix 3+. #### Установка из source (git requires)*: ``` $ cd /usr/lib/zabbix/alertscripts $ git clone https://github.com/xxsokolov/Zabbix-Notification-Telegram.git . ``` После этого нотификатор практически готов к работе, потребуется еще несколько шагов. *Подробную инструкцию вы можете найти на wiki*: RU, ENG (vacant) ## Создаем первое оповещение ### Получаем API token Получили API token от @BotFather который будем использовать в zbxTelegram_config.py: tg_token. *Если у Вас нет бота, я расскажу как это сделать:* RU, ENG (vacant) ## Настраиваем нотификатор ### Конфигурационный файл Основная конфигурация нотификатора производится через файл [zbxTelegram_config.py](https://github.com/xxsokolov/Zabbix-Notification-Telegram/blob/master/zbxTelegram_config.example.py). Давайте разберем каждый параметр подробно: |Имя|Аргумент(ы)|Описание|По умолчанию| |---|-----------|--------|------------| |config_debug_mode|bool|Логирование в режиме debug| False| |config_exc_info|bool|Более детальный режим debug|False| |config_cache_file|string|Абсолютный путь до cash файла|```/usr/lib/zabbix/alertscripts/zbxTelegram_files/id.cache```| |config_log_file|string|Абсолютный путь до log файла|```/usr/lib/zabbix/alertscripts/zbxTelegram_files/znt.log```| |tg_proxy|bool|Использовать прокси для отправки сообщений в Telegram|True| |tg_proxy_server|dict|Ссылка до Вашего прокси|```{'https': 'socks5://username:password@domen:port'}``` |tg_token|string|Тот самый token, который Вы получали у @BotFather|```123123123123:ADDDD_er9beG-fGx33ktYqFkUpAdUtWe2s```| |watermark|bool|Наносить ватермарку на изображение графика|True| |watermark_label|string|Текст наносимый на изображение графика|'Dmitry Sokolov (https://github.com/xxsokolov)'| |watermark_font|string|Путь до файла шрифта|```/usr/lib/zabbix/alertscripts/zbxTelegram_files/ArialMT.ttf```| |watermark_minimal_height|string|Минимальный размер изображения графика для нанесения ватермарки|30| |watermark_fill|string||255| |watermark_rotate|string||0| |watermark_expand|bool||True| |watermark_text_color|string|Цвет текста в RGB|(60, 60, 60)| |body_messages|string|Шаблон формирование тела сообщения.
*Сообщение состоит из: subject, body, links, tags, mentions| |body_messages_cut_symbol|bool|Урезать тело сообщения|True| |body_messages_max_symbol|string|Максимальное кол-во символов в теле сообщения|600| |body_messages_title|string|Шаблон формирования заголовка изображения графика. *```{title}``` формируется из секции xml`````` и ``````или ```graphs_period_default``` в конфиг файле*|```{title} ({period_hour}h)```| |body_messages_url|bool|Добавление линков в сообщение|True| |body_messages_url_notes = True|bool|Добавление линка из триггера в сообщение|True| |body_messages_url_graphs = True|bool|Добавление линка на график "Элемент данных" (item) в сообщение|True| |body_messages_url_host = True|bool|Добавление линка на "Узел сети" (host) в сообщение|True| |body_messages_url_ack = True|bool|Добавление линка на "Подтверждение проблем" в сообщение|True| |body_messages_url_event = True|bool|Добавление линка на "Детали события" в сообщение|True| |body_messages_url_template|sting|Шаблон формирование линка|```{icon}```| |body_messages_url_delimiter|sting|Разделитель между линками|'  '| |body_messages_url_emoji_no_url|emoji|Иконка при отсутствии URL в триггере|➖| |body_messages_url_emoji_notes|emoji|Иконка ссылки URL в триггере|ℹ️| |body_messages_url_emoji_graphs|emoji|Иконка ссылки на график "Элемент данных" (item)|📊| |body_messages_url_emoji_host|emoji|Иконка ссылки на "Узел сети" (host)|📟| |body_messages_url_emoji_ack|emoji|Иконка ссылки на |body_messages_url_emoji_event|emoji|Иконка ссылки на "Детали события"|📋| |body_messages_tags|bool|Добавление всех тэгов в сообщение|True| |body_messages_tags_event|||True| |body_messages_tags_eventid|bool|Добавление eventid тэгов в сообщение|True| |body_messages_tags_itemid|bool|Добавление itemid тэгов в сообщение|True| |body_messages_tags_triggerid|bool|Добавление triggerid тэгов в сообщение|True| |body_messages_tags_actionid|bool|Добавление actionid тэгов в сообщение|True| |body_messages_tags_hostid|bool|Добавление hostnid тэгов в сообщение|True| |body_messages_tags_trigger_settings|bool||True| |body_messages_mentions_settings|bool||True| |body_messages_tags_no|sting|Тег при отсутствии тэга в узле сети|```#no_tags```| |body_messages_tags_delimiter|sting|Разделитель между тэгами|'  '| |body_messages_tags_prefix_eventid|sting|Шаблон формирования тэга eventid|```eid_```| |body_messages_tags_prefix_itemid|sting|Шаблон формирования тэга itemid|```iid_```| |body_messages_tags_prefix_triggerid|sting|Шаблон формирования тэга triggerid|```tid_```| |body_messages_tags_prefix_actionid|sting|Шаблон формирования тэга actionid|```aid_```| |body_messages_tags_prefix_hostid|sting|Шаблон формирования тэга hostidid|```hid_```| |trigger_settings_tag|sting||'ZNTSettings'| |trigger_settings_tag_no_graph|sting||'no_graph'| |trigger_settings_tag_no_alert|sting||'no_alert'| |trigger_settings_tag_not_notify|sting||'not_notify'| |trigger_settings_tag_graph_normal|sting||'graph_normal'| |trigger_settings_tag_graph_stacked|sting||'graph_stacked'| |trigger_settings_tag_graph_pie|sting||'graph_pie'| |trigger_settings_tag_graph_exploded|sting||'graph_exploded'| |trigger_settings_tag_graph_period|sting||'period='| |trigger_info_mentions_tag|sting||'ZNTMentions'| |zabbix_keyboard|bool|Добавление кнопок к сообщению.
(*В стадии разработки*)|False| |zabbix_keyboard_button_message|sting|Имя кнопки "Добавить сообщение к событию"|```Message```| |zabbix_keyboard_button_acknowledge|sting|Имя кнопки "Подтверждение события"|```Acknowledge```| |zabbix_keyboard_button_history|sting|Имя кнопки "Прислать сообщение (пять последних событий)" по данному элементу данных|```History```| |zabbix_keyboard_row_width|int|Количество кнопок в строке|3| |zabbix_api_url|sting|Урл до Zabbix сервера|```http://127.0.0.1/zabbix/```| |zabbix_api_login|sting|Учетная запись|```Admin```| |zabbix_api_pass|sting|Пароль|```zabbix```| |zabbix_graph|bool|Добавление изображения графика к сообщению|True| |zabbix_graph_period_default|int|Период за который присылается изображение графика в секундах.|43200| |zabbix_graph_chart|sting|Шаблон формирования линка до chart3.php|Default| |zabbix_host_link|sting|Шаблон формирования линка до узла сети|```{zabbix_server}zabbix.php?action=search&search={host}```| |zabbix_graph_link|sting|Шаблон формирования линка до графика "Элемент данных" (item)|```{zabbix_server}history.php?action=showgraph&itemids[]={itemid}&from=now-{range_time}```| |zabbix_ack_link|sting|Шаблон формирования линка до "Подтверждение проблем"|```{zabbix_server}zabbix.php?action=acknowledge.edit&eventids[0]={eventid}```| |zabbix_event_link|sting|Шаблон формирования линка до "Детали события"|```{zabbix_server}tr_events.php?triggerid={triggerid}&eventid={eventid}```| |zabbix_status_emoji_map|dict|Словарь соответствия типа события и emoji|{"Problem": "🚨", "Resolved": "✅", "Update": "🚧", "Not classified": "⁉️", "Information": "💙", "Warning": "💛",n"Average": "🧡", "High": "❤️", "Disaster": "💔", "Test": "🚽💩"}| ### XML разметка Дополнительная конфигурация производится через XML разметку([пример](https://github.com/xxsokolov/Zabbix-Notification-Telegram/blob/master/actions.example)) в Zabbix Action. Также разберем эти параметры: |Имя|Аргумент(ы)|Описание|По умолчанию| |---|-----------|--------|------------| |``````|string||Default| |``````|bool|Добавление изображения графика в сообщение.|True| |``````|bool|Добавление линка на "Узел сети" (host) в сообщение.|True| |``````|bool|Добавление линка на график "Элемент данных" (item) в сообщение.|True| |``````|bool|Добавление линка из триггера в сообщение.|True| |``````|bool|Добавление всех тэгов в сообщение.|True| |``````|bool|Добавление тэгов события в сообщение.|True| |``````|bool|Добавление тэгa c eventid в сообщение.|True| |``````|bool|Добавление тэгa c itemid в сообщение.|True| |``````|bool|Добавление тэгa c triggerid в сообщение.|True| |``````|bool|Добавление тэгa c actionid в сообщение.|True| |``````|bool|Добавление тэгa c hostid в сообщение.|True| |``````|bool||True| |``````|bool||True| |``````|bool|Добавление кнопок к сообщению.
(*В стадии разработки*).|True| |``````|string|Период за который присылается изображение графика в секундах.|10800| |``````|string|Макрос имени узла сети.|{HOST.HOST}| |``````|string|Макросы ИД элементов данных.|{ITEM.ID1} {ITEM.ID2} {ITEM.ID3} {ITEM.ID4}| |``````|string|Макрос ИД триггера.|{TRIGGER.ID}| |``````|string|Макрос ИД события.|{EVENT.ID}| |``````|string|Макрос ИД действия.|{ACTION.ID}| |``````|string|Макрос ИД узла сети.|{HOST.ID}| |```<![CDATA[]]>```|string|Шаблон формирования заголовка изображения графика из макросов: имя узла сети и имя события.|{HOST.HOST} - {EVENT.NAME}| |``````|string|Макрос URL триггера.|{TRIGGER.URL}| |``````|string|Макрос тэгов события разделенных запятой. Макрос объединяет теги из узла сети, шаблона, триггера.|{EVENT.TAGS}| *Полный список поддерживаемых макросов в Zabbix* ``````: _В XML документах фрагмент, помещенный внутрь CDATA, — это часть содержания элемента, которая помечена для парсера как содержащая только символьные данные, а не разметку. CDATA — это просто альтернативный синтаксис для отображения символьных данных, нет никакой смысловой разницы между символьными данными, которые объявлены как CDATA и символьными данными, которые объявлены в обычном синтаксисе и где «<» и «>» будут представлены как «<» и «>», соответственно. (Wikipedia)_ ### Тэги ZNTSettings+ Более детальную настройку нотификатора можно произвести через тэги в триггерах. Разберем эти параметры: |Имя|Описание|По умолчанию| |---|--------|------------| |trigger_settings_tag|Имя тэга для обработки значений параметров.|'ZNTSettings'| |trigger_settings_tag_no_graph|Значение тэга 'ZNTSettings' при котором изображение графика не будет добавлено в сообщение.|'no_graph'| |trigger_settings_tag_no_alert|Значение тэга 'ZNTSettings' при котором сообщение отправлено не будет.
*В [лог файл](#логирование) будет добавлено событие об отмене отправки сообщения.*|'no_alert'| |trigger_settings_tag_not_notify|Значение тэга 'ZNTSettings' при котором сообщение будет отправляет беззвучно.
*Пользователи iOS не получат уведомления, пользователи Android получат уведомление без звука.*|'not_notify'| |trigger_settings_tag_graph_normal||'graph_normal'| |trigger_settings_tag_graph_stacked||'graph_stacked'| |trigger_settings_tag_graph_pie||'graph_pie'| |trigger_settings_tag_graph_exploded||'graph_exploded'| |trigger_settings_tag_graph_period|Значение тэга 'ZNTSettings' при котором будет задан период за какой присылать изображение графика. Указывается после разделителя ```=``` в секундах.
Приоритет: tag, xml, config*|'period='| |Имя|Описание|По умолчанию| |---|--------|------------| |trigger_info_mentions_tag|Тэг упоминания юзера|'ZNTMentions'|

Пример: Kitten
## Логирование Все основные события (отправка, добавления в cash файл, изменение группы в суппергруппу, ошибки, дебаг) логируются в файле ```znt.log```, Вы можете его найти по умолчанию ```/usr/lib/zabbix/alertscripts/zbxTelegram_files/znt.log``` (config_log_file]) Поддерживаются три режима логирования: 1. Обычный(по-умолчанию), ведется минимальный log об операциях в нотификаторе; 2. Debug], более детальный log, требуется только для анализа ошибок в работе нотификатора *(по-умолчанию False)*; 3. exc_info], полный Traceback ошибок *(по-умолчанию False)*; ## F.A.Q. #### Оповещение не приходит в группу или в личку ## Последние значимые изменения * Добавлены и изменены переменные в конфиг файле. * Изменен XML. ## Помощь * Welcome! ZNTGroup. --- 1Формирование списка urls в теле сообщения для быстрого перехода в разделы Zabbix (Trigger, History, Event, Acknowledget, Host)
2 Формирование списка tags в теле сообщения для быстрого поиска событий в Telegram (Trigger Tags, Eventid, Itemid, Triggeid, Actionid)
3 Кеш файл это json массив содержащий имена юзуров, групп, суппергруп и их идентификаторы(ИД). Безопасность Telegram не позволяет напрямую писать по имени, только по ИД. Чтобы получить данный ИД надо написать лично Вашему боту или бот должен быть добавлен в группу . Только после этого нотификатор "подключается" к боту и получает все обновления которые произошли у бота (getUpdates). Далее мы находим никнейм или имя групп, куда решили отправить нотификацию, и их ИД, которые и кладем в cash файл. FAQ Telegram
4 Управление через Trigger Tags (Не прикреплять график, не отправлять уведомление, без push в Telegram *dev* и т.п.)