Скрипт уведомлений из zabbix в telegram

Создаем бота в telegram.

Для этого надо найти бота @BotFather и сказать ему «/start» и потом «/newbot». BotFather сначала спросит, как назвать нового бота, а следующим сообщением нужно ввести имя бота. В ответ BotFather пришлет token.

Чтобы отправить себе сообщение, нужно знать свой Telegram ID. Для этого ищем бота @MyTelegramID_bot и пишем ему «/start». В ответ получите свой Telegram ID. Он еще понадобиться.
Если оповещение нужно отправлять в группу, то надо этого бота добавить в группу и сказать «/start». И далее использовать этот Telegram ID.

Проверяем что все сделали правильно, пишем в консоли:

curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"id_вашего_чата_или_пользователя","text":"Произвольный текст для отправки через бота"}' "https://api.telegram.org/bot"token_бота(был выдан при создании)/sendMessage"

UPD: Для работы скрипта,команд через http прокси необходимо использовать CURL с ключом -x, например:
Прокси без аутентификации:
-x http://proxy-URL:3128
Прокси с аутентификацией
-x http://proxyuser:proxypassword@proxy-URL:3128
В скрипте просто добавьте ключ в вызове curl

Если все сделано правильно, то вам/в вашу группу прилетит сообщение от вашего бота с тем текстом, который вы написали в консоли.

Скрипт с расширением .sh желательно положить в каталоге установки zabbix (/etc/zabbix/alertscripts/название_скрипта.sh)
Сам скрипт:
#!/bin/bash
TOKEN='токен_вашего_бота'
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-notify.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 /etc/zabbix/alertscripts/zabbix-to-telegram-notify.sh

Теперь настраиваем новый способ оповещения.Для этого: Администрирование — Способы оповещений, нажимаем «Создать способ оповещений». В поле «Имя» вводим название способа оповещения. В поле «Тип» нужно выбрать «Скрипт». В поле «Имя скрипта» нужно указать имя файла-скрипта (БЕЗ ПУТИ!).В поле «Параметры скрипта» нужно нажать «Добавить» 3 раза и ввести в появившиеся поля {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}.
Далее переходим в Администрирование — Пользователи — выбираем нужного(или своего) пользователя — Оповещения — Добавить. В поле «Тип» выбираем только что созданный способ оповещения. В поле «Отправлять на» вводим свой Telegram ID.Переходим в Настройка — Действия, в поле «Источник событий» выбираем «Триггеры» и жмем «Создать действие». На закладках «Действие» и «Условие» заполняем поля по своему усмотрению. В полях «Сообщение по умолчанию» и «Сообщение о восстановлении» указываем:
{HOST.NAME} :: {ITEM.NAME} :: {ITEM.VALUE}
Status: {TRIGGER.STATUS}
Host: {HOST.NAME}
Item: {ITEM.NAME}
Value: {ITEM.LASTVALUE}
Key: {ITEM.KEY}
Severity: {TRIGGER.SEVERITY}
Trigger: {TRIGGER.NAME}
Description: {TRIGGER.DESCRIPTION}

Ненужные параметры можно убрать.
На закладке «Операции» жмем «Новый». Выбираем пользователя. В поле «Отправить только через» выбираем созданный нами способ оповещения. Жмем «Добавить» и еще раз «Добавить»

0

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

Ваш e-mail не будет опубликован.