В предыдущих темах мы установили систему мониторинга 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.»
2. Идем в Администрирование — Пользователи — Выбираем нашего пользователя «Admin«.
В открывшемся окне пользователя переходим на вкладку «Оповещения» — Добавить.
Тип: Telegram Bot;
Отправлять на: 194533722 (ID нашего telegram аккаунта);
Остальные параметры оставляем по умолчанию или на ваше усмотрение.
Активировано: ставим галочку;
Добавить.
3. Переходим Настойка — Действие — Источник событий «Триггеры» — Создать действие.
Вкладка Действие:
Имя: Уведомление Telegram c Zabbix;
Активировано: ставим галочку;
Вкладка «Операции»:
Длительность шага операции по умолчанию: 60 — (через 60 секунд после срабатывание триггера приходит уведомление)
Нажимаем в этой же вкладке Операции — Новое.
Меняем только:
Тип операции: Отправить сообщение;
Отправлять пользователям: Admin;
Отправлять только через: Telegram Bot;
Добавить.
Во вкладке «Операции восстановления» повторяем тоже самое, что и во вкладке «Операции«.
На этом настройка оповещений Zabbix от Telegram завершена.
Остается положить какой-нибудь порт с мониторинга, и дождаться уведомление о триггере.
а есть ли курсы по Заббиксу?
Добрый день.
Предлагаю посмотреть видео по настройке Zabbix на нашем Youtube-канале https://youtu.be/zrLU-KUQc9k .
Так же изучить материалы по Zabbix на сайте http://adminwin.ru/?s=zabbix
Вот еще с отправкой графиков и кучей настроек
https://github.com/xxsokolov/Zabbix-Notification-Telegram