Оповещения через Telegram в Zabbix
zabbix_server (Zabbix) 3.4.7
Настройка Zabbix Server
Скрипты оповещений выполняются на стороне Zabbix Server'a, они размещаются в папке, указанной в конфиге переменной AlertScriptsPath
/etc/zabbix/zabbix_server.conf
AlertScriptsPath=/etc/zabbix/alertscripts
Создание бота
Для создания бота в Telegram существует специальный бот - @BotFather
- Найти и добавить @botfather в контакты
- Отправить сообщение: «/start» - краткий список доступных команд
- Отправить сообщение: «/newbot» - запрос на создание бота
- Отправить ответ на вопрос - Имя бота: «Вася»
- Отправить ответ на вопрос- username бота: «vasya_bot»
username должен оканчиваться словом Bot (регистронезависимо).
- Запомнить access token: «553904595:AAHk16bcwKV72ULQMGnBY5eaUEm_d1dkHko»
Установка скрипта
Создание папки для скриптов:
mkdir /etc/zabbix/alertscripts chown root:zabbix /etc/zabbix/alertscripts chmod 750 /etc/zabbix/alertscripts
Создадим сам скрипт:
Не забыть заменить BOT_AUTH_TOKEN в скрипте
Настройка чата
Прежде чем рассылать сообщения, необходимо узнать chat_id. Это делается один раз для каждого адресата (группы)
Видимо, для избежания рассылки спама, в Telegram Bot API не предусмотрена возможность отправки сообщений по имени или номеру контактна, а так же поиск.
Поэтому, прежде чем бот сможет отправлять сообщения, необходимо первым начать с ним диалог (либо добавить в группу) - и написать любое тестовое сообщение.
Это нужно для того, что бы узнать chat_id.
Есть спец. боты типа @get_id_bot, возможно это удобно, но я бы предпочел обойтись только собственным ботом.
Индивидуальные сообщения
- Найти и добавить бота в контанкты
- Написать тестовое сообщение в чат
- Выполнить скрипт с параметром getid
$: ./telegram.sh getid {"id":227768999,"first_name":"Aleksey","last_name":"K","username":"Aleksey","type":"private"}, {"id":287033399,"first_name":"\u041c\u0430\u043a\u0441\u0438\u043c","last_name":"\u041f","type":"private"}, # Русские символы записываются кодами символов Unicode $: python -c 'print(u"\u041c\u0430\u043a\u0441\u0438\u043c")' Максим
- Отправить ответное сообщение для проверки
$: ./telegram.sh 227768999 TEST [OK] Message was sent
Групповые сообщения
- Найти и добавить бота в группу
Что бы бот увидел сообщения в групповом чате ему нужно добавить прав. Проще всего его сделать админом чата.
- Написать тестовое сообщение в чат группы
- Выполнить скрипт с параметром getid
$: ./telegram.sh getid {"id":-1001134251199,"title":"Monitoring Zabbix","type":"supergroup"},
- Отправить ответное сообщение для проверки
$: ./telegram.sh -1001134251199 TEST [OK] Message was sent
chat_id группового чата начинается с «-»
Оповещения в Zabbix Server
Добавляем новый способ оповещения на Zabbix Server'e
Добавляем контактную информацию в профиль пользователя
https://www.zabbix.com/documentation/3.4/ru/manual/config/notifications/media/script
https://core.telegram.org/bots#6-botfather
https://core.telegram.org/bots/api
Обсуждение