Хотите получать оповещение триггеров Zabbix в Telegram? Нет проблем, далее приведен очень простой способ подружить Zabbix и Telegram, используя Telegram Bot API, а если быть точнее…используя уже готового бота.
Мой хороший друг написал Telegram-бота, который умеет отправлять адресату то, что приходит в правильно-сформированном HTTP GET запросе. Он очень удачно подходит для различных «оповещалок».
Так вот, знакомьтесь: Глашатый, он же CrierBot.
Бот присылает все, что было в специальном HTTP GET запросе вида: http://crierbot.appspot.com/<TOKEN>/send?message=<MESSAGE>
Где TOKEN — токен выданный ботом при его добавлении в список контактов Telegram, а MESSAGE — собственно сообщение, которые хотите передать.
Давайте начнем по порядку. Сначала добавим бота к себе в Telegram:
Добавляем @crierbot к себе в список контактов и нажимаем START

После этого бот пришлет нам наш уникальный Token

Все, бот готов к работе. Теперь займемся Zabbix’ом
Zabbix умеет отправлять оповещения, используя скрипт. Согласно официальной документации, Zabbix отправляет 3 параметра: получатель, тема сообщения, текст сообщения.
Давайте напишем скрипт, который будет отправлять переданное Zabbix’ом боту.
#!/bin/bash PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin wget -O /dev/null "http://crierbot.appspot.com/$1/send?message=Subj: $2 || Message:$3"
Где $1, $2, $3 переданные Zabbix’ом параметры: получатель, тема сообщения, сообщение.
Данный скрипт сохраняем с произвольным именем, н.р. telegram.sh в директорию Zabbix’а, где хранятся скрипты уведомлений (в Debian по умолчанию это директория: /usr/lib/zabbix/alertscripts/ )
Делаем наш скрипт исполняемым:
chmod +x /usr/lib/zabbix/alertscripts/telegram.sh
Теперь переходим в веб-интерфейс Zabbix’а и переходим по Меню: «Администрирование» -> «Способы оповещения» и нажимаем «Создать способ оповещения»

В появившейся форме заносим следующие данные:
Имя: произвольное, н.р. Telegram
Тип: Скрипт
Имя скрипта: то имя, которое было присвоено нашему скрипту, у меня это telegram.sh (ВНИМАНИЕ: не надо писать полный путь к скрипту!!!)
Активировано: [V]
Нажимаем «Добавить»

В третьей версии Zabbix нужно при создании media type обязательно указывать три параметра {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}, как написано тут:
https://www.zabbix.com/documentation/3.0/manual/config/notifications/media/scriptиначе $1..$3 не передаются в скрипт, и, соответственно, ничего не работает
Спасибо за дополнение Dmitry Burtsev и Nikolay Groo
Чтобы добавить пользователю данный вид оповещения нужно:
- Перейти: «Администрирование»->»Пользователи»
- Выбрать нужного пользователя
- Перейти на вкладку «Оповещения»
- Нажать «Добавить»
- В появившемся окне выбрать способ оповещения «Telegram» (тот что создали ранее) и ввести токен в поле «Отправлять на»
Все, теперь осталось добавить данный способ оповещения в «Действия» («Настройки»->»Действия») и вы будите получать вот такие сообщения:

P.S.: Если вы не хотите получать полный текст сообщений Zabbix’а и вам достаточно лишь темы сообщения, то уберите параметр $3 из скрипта, н.р. так:
#/bin/bash PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin wget -O /dev/null "http://crierbot.appspot.com/$1/send?message=$2"
UPDATE [03.02.2016]:
Исходный код доступен на GitHub: https://github.com/hellsman/crierbot
Группа в Telegram для приема и обсуждения предложений по улучшению бота: https://telegram.me/joinchat/Ay5NVgZjJ_YiDeEpE8b3Og
UPDATE [31.03.2016]:
Обновил скрипты, бывают проблемы что wget не находится и поэтому сделано обновление переменно PATH, также добавлен вывод ответа wget в /dev/null, чтобы не создавались файлы на диске. (Спасибо за дополнение Dmitry Burtsev, Дмитрий Андреев)
comments powered by HyperComments