Подключаем Telegram к Zabbix

Задача:
---------------------------------------------------------------Используя встроенные webhook в zabbix, настроить оповещения zabbix через кроссплатформенный мессенджер Telegram.
Если хотите получать уведомления с Zabbix через Telegram, эта статья для вас. Настроить взаимодействие телеграмма с забиксом можно тремя способами:
- Использовать встроенный webhook
- Написать свой скрипт для уведомлений
- Найти готовые решения на github или аналогичных ресурсах
Первым делом необходимо создать бота, с помощью которого будем слать оповещения из zabbix. Добавляем контакт @BotFather

I can help you create and manage Telegram bots. If you’re new to the Bot API, please see the manual (https://core.telegram.org/bots).
You can control me by sending these commands:
/newbot – create a new bot
/mybots – edit your bots [beta]Edit Bots
/setname – change a bot’s name
/setdescription – change bot description
/setabouttext – change bot about info
/setuserpic – change bot profile photo
/setcommands – change the list of commands
/deletebot – delete a botBot Settings
/token – generate authorization token
/revoke – revoke bot access token
/setinline – toggle inline mode (https://core.telegram.org/bots/inline)
/setinlinegeo – toggle inline location requests (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback – change inline feedback (https://core.telegram.org/bots/inline#collecting-feedback) settings
/setjoingroups – can your bot be added to groups?
/setprivacy – toggle privacy mode (https://core.telegram.org/bots#privacy-mode) in groupsGames
/mygames – edit your games (https://core.telegram.org/bots/games) [beta]
/newgame – create a new game (https://core.telegram.org/bots/games)
/listgames – get a list of your games
/editgame – edit a game
/deletegame – delete an existing game
Пишем ему /start, затем /newbot. Указываем желаемое имя бота, в нашем случае “zabbixosbsd”. Оно оказалось свободно, теперь указываем действительное имя бота, оно должно содержать в конце “bot”
После окончания регистрации бота “zabbixosbsd_bot” мы получим token, который нам понадобится далее.

Теперь нужно добавить @zabbixosbsd_bot в свой список контактов. Для этого найдите его по имени в телеграмме, ну и собственно, добавьте. Также нам понадобится id вашего аккаунта. Узнать его можно при помощи бота @myidbot , сделав соответствующий запрос “/getid“

Проверить работу можно сразу из консоли сервера, выполнив соответствующий запрос
curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"11111111","text":"test - тестовое сообщение"}' "https://api.telegram.org/bot22222222222:AAAAAAAAAAAAAA/sendMessage"
В запросе используются следующие данные:
11111111 | id аккаунта. Который мы знали при помощи бота @myidbot |
22222222222:AAAAAAAAAAAAAA | token бота “zabbixosbsd_bot” , который мы получим от @BotFather |

Сразу должно прийти сообщение в телеграмме

Теперь переходим к настройке webhook в забиксе. Выбираем “Administration > Media types > Telegram” (в русской версии: Администрирование -> Способы оповещений > Telegram)

Тут достаточно указать токен полученный ранее. Нажимаем “Update” и переходим к тестированию

Для тестирования, в правой части окна на против каждого сервиса вы найдёте соответствующие ссылки. Указываем:
- TO – Указываем узнанный ранее ID
- Token – всё тот же токен

Нажимаем тест и получаем сразу же сообщение в телеграмм

Если вы хотите чтобы несколько человек получало сообщение, то необходимо создать группу

и добавить туда бота.

Также стоит добавить бота @myidbot и узнать id группы.

Проверяем. Важно: ID группы указывается с минусом в начале.

Настраиваем оповещение пользователя. Необходимо выбрать телеграмм и указать ид группы

Далее необходимо настроить действие, выполняемое при возникновении события.
Так как я настраиваю и работаю в Zabbix состоя в группе администраторов, мне достаточно только активировать стандартное действие “Report problems to Zabbix administrators”

Во вкладке “Actions” ставим шалочку на против “Enabled”

Во вкладке “Operations” ничего трогать не нужно, стандартные настройки нам подходят. Как видем тут указанно что при возникновении события, уведомлять заббих будет всеми возможными вариантами и по всем проблеммам.

Тестируем уведомления Zabbix
Для тестирования оповещения создадим мониторинг фейкового хоста, к примеру фальшивую ICMP проблему. На экране панели инструментов открываем меню «Конфигурация», выбираем подменю «Хосты» и в правом верхнем углу экрана нажмаем кнопку «Создать хост». Не забываем хост включить в группу, на картинке ниже я забыл.

на вкладке “Templates” добавляем шаблон “ICMP Ping” и сохраняем хост.

Спустя буквально минуты две, заббих определил что хост недоступен и отправил сообщение.

Короткая официальная документация:
Register bot: send “/newbot” to @BotFather and follow instructions
Copy and paste the obtained token into the “Token” field above
If you want to send personal notifications, you need to get chat id of the user you want to send messages to:
3.1. Send “/getid” to “@myidbot” in Telegram messenger
3.2. Copy returned chat id and save it in the “Telegram Webhook” media for the user
3.3. Ask the user to send “/start” to your bot (Telegram bot won’t send anything to the user without it)If you want to send group notifications, you need to get group id of the group you want to send messages to:
4.1. Add “@myidbot” to your group
4.2. Send “/getgroupid@myidbot” in your group
4.3. Copy returned group id save it in the “Telegram Webhook” media for the user you created for group notifications
4.4. Send “/start@your_bot_name_here” in your group (Telegram bot won’t send anything to the group without it)
А что в поле script указывать?
там уже все автоматически указанно