В предыдущих темах мы установили систему мониторинга Zabbix и показали на примерах как добавить на мониторинг устройства Dlink и Mikrotik. Для удобства оповещений о неполадках устройств мы настроим отправку оповещений из Zabbix в Telegram на наш аккаунт или общий чат, в случае если надо оповестить всех участников чата.

Создание бота Telegram.

В первую очередь нам необходимо создать бота, от которого в дальнейшем мы будем получать уведомления о неисправностях.

1. Над списком контактов в поле Search находим бота @BotFather и жмем на панель c названием /start или вводим команду /start в поле для сообщений.
2. Следующей командой /newbot мы получаем сообщение: «Alright, a new bot. How are we going to call it? Please choose a name for your bot.», исходя из которого нам нужно задать имя, в конце которого обязательно должно присутствовать слово bot. Например, adminwin_zabbixbot.

3. В ответ на наше сообщение с именем бота мы получаем Token бота, который выглядит в виде «Use this token to access the HTTP API:
423393656:AAE1hJ5EE_o8KIDWrWW9A8-hZnpAL9-htGI»

Настройка аккаунта Telegram, получение ID.

Нам нужно определить идентификационный номер своего контакта, на который мы будем получать уведомления от ithelp21_zabbixbot.
Для этого снова находим в поиске @MyTelegramID_bot и жмем кнопку /start или вводим команду, после которой мы получим ID «This BOT simply telling you your current Telegram ID. You Telegram ID: 194533722«.

Теперь проверим отправку сообщений с нашего бота на на аккаунт в Telegram.
В CentOS, где установлен zabbix-server запускаем команду, со своими данными. В моем случае команда будет выглядеть так:

curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"194533722","text":"Привет, я Telegram-bot для Zabbix!"}' "https://api.telegram.org/bot423393656:AAE1hJ5EE_o8KIDWrWW9A8-hZnpAL9-htGI/sendMessage"

Шаблон для ввода своих данных:

curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"вводим ID своего аккаунта","text":"Привет, я Telegram-bot для Zabbix!"}' "https://api.telegram.org/botВводим Token, который мы получили при создании бота/sendMessage"

Обратите внимание что Token нужно вводить сразу же api.telegram.org/bot»Token» без пробела после «bot»!

Если все данные ввели верно, мы получим в чате сообщение «Привет, я Telegram-bot для Zabbix!» от нашего бота.

Добавим Telegram — уведомление в Zabbix.

1. Проверяем, где у нас в Zabbix находится папка для скриптов, который мы далее создавать, вводим команду и получаем результат.

[root@Zabbix ssmtp]# grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts

Создаем в выше указанной папке script с именем zabbix-to-telegram-bot.sh:

[root@Zabbix ssmtp]# vim /usr/lib/zabbix/alertscripts/zabbix-to-telegram-bot.sh

и заполняем его следующим кодом:

#!/bin/bash
TOKEN='423393656:AAE1hJ5EE_o8KIDWrWW9A8-hZnpAL9-htGI'
which curl &>/dev/null
if [ $? -ne 0 ] ; then echo 'FAIL: curl not found.' && exit 1 ; fi
if [ $# -ne 3 ] ; then echo 'FAIL: Params not defined.' && echo 'Usage: zabbix-to-telegram-bot.sh TelegramID Subject Message' && exit 1 ; fi
CHAT_ID="$1"
SUBJECT="$2"
MESSAGE="$3"
curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${CHAT_ID}\",\"text\":\"${SUBJECT}\n${MESSAGE}\"}" "https://api.telegram.org/bot${TOKEN}/sendMessage" | grep -q '"ok":false,'
if [ $? -eq 0 ] ; then exit 1 ; fi

Даем права скрипт-файлу:

# chmod +x /usr/lib/zabbix/alertscripts/zabbix-to-telegram-bot.sh

Для проверки работы скрипта запускаем его вручную следующим образом:

cd /usr/lib/zabbix/alertscripts/
./zabbix-to-telegram-bon.sh "194533722" "test_tema" "test_message"

где «194533722» id вашего чат-бота.

Настройка оповещений в Zabbix через Telegram.

1. Заходим в Администрирование — Способы оповещений — Создать способ оповещения.

Имя: Telegram Bot;
Тип: Скрипт;
Имя скрипта: zabbix-to-telegram-bot.sh;
Параметры скрипта:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
Активировано: ставим галочку;
Жмем Добавить.

2. Перейти в радел Шаблоны сообщений.

Обязательно добавить шаблоны сообщений для Тип сообщения: Проблема и Восстановление системы . Пропуск этого пункта часто становится причиной ошибки «No message defined for media type.»

zabbix_telegram

2. Идем в Администрирование — Пользователи — Выбираем нашего пользователя «Admin«.
В открывшемся окне пользователя переходим на вкладку «Оповещения» — Добавить.

Тип: Telegram Bot;
Отправлять на: 194533722 (ID нашего telegram аккаунта);
Остальные параметры оставляем по умолчанию или на ваше усмотрение.
Активировано: ставим галочку;
Добавить.

3. Переходим Настойка — Действие — Источник событий «Триггеры» — Создать действие.

Вкладка Действие:
Имя: Уведомление Telegram c Zabbix;
Активировано: ставим галочку;

Вкладка «Операции»:
Длительность шага операции по умолчанию: 60 — (через 60 секунд после срабатывание триггера приходит уведомление)
Нажимаем в этой же вкладке Операции — Новое.
Меняем только:
Тип операции: Отправить сообщение;
Отправлять пользователям: Admin;
Отправлять только через: Telegram Bot;
Добавить.

Во вкладке «Операции восстановления» повторяем тоже самое, что и во вкладке «Операции«.

На этом настройка оповещений Zabbix от Telegram завершена.
Остается положить какой-нибудь порт с мониторинга, и дождаться уведомление о триггере.

3 thoughts on “Настройка оповещений Zabbix в Telegram.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.