Актуальная версия здесь.
В предыдущем посте я описал установку системы мониторинга Zabbix с использованием Docker контейнеров. Сегодня мы попробуем настроить оповещения с помощью Telegram мессенджера.
Для тонкой настройки оповещений следует использовать пункт меню Настройка/действия(не является темой заметки). Интересующимся сюда .
В предыдущем посте я описал установку системы мониторинга Zabbix с использованием Docker контейнеров. Сегодня мы попробуем настроить оповещения с помощью Telegram мессенджера.
Создаем Telegram бота
- Для этого в Telegram добавляем бота @BotFather и жмем "запустить"
- Отправляем боту команду /newbot (можно нажать ссылку меню)
- Вводим имя бота, которое будет отображаться в контактах
- Вводим имя бота для вызова, которое должно заканчиваться на bot и быть уникальным и в ответ получаем токен
- Добавляем в контакт лист Telegram @userinfobot
- Жмем запуск и узнаем user_ID
- Для отправки сообщений в группу, необходимо в группу добавить @groupinfobot, после чего инфобота можно удалить
- Из консоли проверяем отправку(вместо User_ID можно указать Group_ID со знаком "-")
curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"User_ID","text":"Пров.org/bot<bot_token>/sendMessage"
- Пишем скрипт отправки zsender.sh
#!/bin/sh token='bot_token' chat="$1" subject="$2" message="$3" /usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subject}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage
- Делаем исполняемым
chmod +x zsender.sh
- Проверяем
./zsender.sh User_ID 'Test message' 'it is test message'
Скрипт работает
Настройка Zabbix для работы с ботом
- Подключаемся к контейнеру с Zabbix-Server
docker exec -i -t zabbix-server sh /var/lib/zabbix #
- устанавливаем curl
apk update apk upgrade apk add curl
- Переходим в каталог /usr/lib/zabbix/alertscripts и в него генерируем скрипт созданный и проверенный нами на предыдущем шаге(чтоб не перегружать контейнер ненужным софтом делаем все из командной строки)
cd /usr/lib/zabbix/alertscripts echo $'#!/bin/sh\ntoken=\'<bot_token>\'\nchat="$1"\nsubject="$2"\nmessage="$3"\n/usr/bin/curl -s --header \'Content-Type: application/json\' --request \'POST\' --data "{\\"chat_id\\":\\"${chat}\\",\\"text\\":\\"${subject}\\n${message}\\"}" "https://api.telegram.org/bot${token}/sendMessage"' >/usr/lib/zabbix/alertscripts/zsender.sh chmod +x /usr/lib/zabbix/alertscripts/zsender.sh
- Проверяем что в итоге получилось
cat /usr/lib/zabbix/alertscripts/zsender.sh
-
Добавляем в Zabbix новый способ оповещения, для чего идем
Администрирование/Способы оповещения/Создать способ оповещения - Указываем наш скрипт, задаем имя и параметры:
- В итоге имеем
Жмем тест - В получателя вводим User_ID или Group_ID со знаком "-"
Результат тестирования - Добавляем оповещение для пользователя
Жмем добавить Вводим User_ID/-Group_ID Результат
Для тонкой настройки оповещений следует использовать пункт меню Настройка/действия(не является темой заметки). Интересующимся сюда .
Добрый вечер! опишите пожалуйста подробно что куда вписывать
ОтветитьУдалитьtoken='bot_token'
chat="$1"
subject="$2"
message="$3"
/usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subject}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage
если не трудно с примером где есть постановка данных ( ну дял примера просто любые левые цифры символы)
Заранее благодарю !
Это содержимое файла zsender.sh, который длжен быть исполняемым и лежать в /usr/lib/zabbix/alertscripts.
УдалитьЕсли Вы имеете дело с Docker контейнером то лучше обратите внимание на более свежий вариант заметки - ссылка вверху статьи.
вместо bot_token указываете токен, полученый при создании бота больше в скрипте ничего менять не нужно.
УдалитьИспользовать скрипт из консоли можно таким образом:
./zsender.sh User_ID 'Test message' 'it is test message'
где User_ID - User_ID получателя, а в кавычках заголовок и текст сообщения