Отправка оповещений из Zabbix в Telegram
- Отправка графиков и последних значений в одном сообщении
- Гибкая настройка шаблона в теле сообщения
- Обработка быстрых команд ботом
- Отправка показателей по запросу от бота
- Передача данных из экшена XML разметкой
- Формирование списка линков в теле сообщения
- Формирование списка тэгов в теле сообщения
- Emoji мапинг статуса и важности события
- Наложение ватермарки на изображение
- Формирование и обновление кэшфайла (privat, group -> supergroup)
- Gitlab CI\CD
- Становимся пользователем, от имени которого будет работать скрипт на системном уровне (по-умолчанию
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
Настройка 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}