Мне надоело возиться с проксиками для работы скрипта "Уведомления от Zabbix в Telegram" поэтому решил сделать так, чтобы работало без прокси, т.к. своего проксика нет.
Не долго думая, вспомнил, что у IFTTT с не очень недавних пор появилась поддержка webhooks. Через этот механизм я и решил сделать "новую" уведомлялку.
Есть два варианта:
1. Слать уведомления от бота IFTTT
2. Слать уведомления от своего бота, которого делал в "Уведомления от Zabbix в Telegram"
Рассмотрим оба варианта.
В обоих случаях нужно зарегистрироваться на IFTTT. После чего перейти в My Applets -> Services, в поле поиска ввести webhooks и тыкнуть по карточке "Webhooks" и там нажать кнопку "Connect". Далее справа вверху нажать кнопку "Documentation" и сохранить куда-нибудь "Your key is:", ключик скоро понадобится.
Теперь надо создать апплет ifttt. Открываем My Applets -> New Applets, тыкаем по синей надписи "this", вводим в поле поиска "webhooks" и тыкаем карточку, теперь выбираем карточку "Receive a web request" и в поле "Event Name" указываем название события без пробелов, например, "telegram_to_zabbix". Жмем кнопку "Create trigger".
Теперь тыкаем в синюю надпись "that", в поле поиска вводим "telegram", тыкаем карточку и выбираем "Send message". В поле "Message text" заменяем текст на
Жмем "Create action". Жмет "Finish". Готово.
Теперь надо сделать скрипт и настроить заббикс.
Коннектимся на сервер заббикса, идем в папку /etc/zabbix/alertscripts и создаем файл, например, zabbix-to-ifttt_telegram-notify.sh, в котором пишем следующий код:
И даем этому файлу права на выполнение:
Далее открываем заббикс и переходим в Администрирование > Способы оповещения, жмем "Создать способ оповещения" (шаг 4 в "Уведомления от Zabbix в Telegram").
В поле "Имя" указываем, например, "IFTTT to Telegram Bot".
В поле "Тип" выбираем "Скрипт".
В поле "Имя скрипта" вписываем имя созданного выше файла, например, zabbix-to-ifttt_telegram-notify.sh.
В разделе "Параметры скрипта" жмем три раза "Добавить" и вводим (по порядку сверху вниз):
Далее идем в Администрирование > Пользователи, выбираем своего пользователя, переходим в "Оповещения", жмем "Добавить".
В поле "Тип" выбираем созданный ранее способ оповещения, например, IFTTT to Telegram Bot.
В поле "Отправлять на" указываем ключик, который мы получили на IFTTT в самом начале ("Your key is:").
Остальные поля на свой вкус.
Жмем "Добавить" и потом "Обновить". С пользователем готово.
Осталось сделать действие на триггер. Идем в Настройка > Действия, справа вверху в "Источник событий" выбираем "Триггеры" и жмем "Создать действие".
Действие нужно создавать аналогично как описано в статье "Уведомления от Zabbix в Telegram" в шаге 6. Я в разделе "Действие" указываю
В разделе "Операции" в поле "Тема по умолчанию" указываю "{TRIGGER.STATUS} {HOST.NAME}".
В поле "Сообщение по умолчанию" - "Trigger: {TRIGGER.NAME}<br>{ITEM.NAME} = {ITEM.LASTVALUE}"
В разделе "Операции восстановления" все аналогично. Поле "Операции" не трогаем.
Готово. Теперь уведомления от заббикса будут прилетать в телегу через бота IFTTT.
Сначала нужно, как и пред. варианте, создать апплет ifttt. Открываем My Applets -> New Applets, тыкаем по синей надписи "this", вводим в поле поиска "webhooks" и тыкаем карточку, теперь выбираем карточку "Receive a web request" и в поле "Event Name" указываем название события без пробелов, например, "Zabbix_Notify_Bot". Жмем кнопку "Create trigger".
Теперь тыкаем в синюю надпись "that", в поле поиска снова вводим "webhooks", тыкаем карточку и выбираем "Make a web request
".
В поле "URL" вводим https://api.telegram.org/bot%ТОКЕН%/sendMessage. Подстроку %ТОКЕН% нужно заменить на свой токен. Как его получить смотри в шаге 1 в статье "Уведомления от Zabbix в Telegram". Либо можете использовать моего бота - https://api.telegram.org/bot179320554:AAHI9AeBkptHgMIh5pVs31CRzGHV_9sG8bs/sendMessage.
В поле "Method" выбираем "POST".
В поле "Content Type" выбираем "application/json".
В поле "Body" вводим {"chat_id":"{{Value1}}","text":"{{Value2}}\n{{Value3}}"}.
Жмем "Create action". Жмет "Finish". Готово.
Теперь нужно сделать скрипт.
Коннектимся на сервер заббикса, идем в папку /etc/zabbix/alertscripts и создаем файл, например, zabbix-via-ifttt-to-telegram-notify.sh, в котором пишем следующий код:
В переменной "IFTTT_KEY" нужно указать ключ, который мы получали на IFTTT в самом начале ("Your key is:").
Далее нужно этому файлу дать права на выполнение:
Теперь надо настроить заббикс.
В Администрирование > Способы оповещения, жмем "Создать способ оповещения" (шаг 4 в "Уведомления от Zabbix в Telegram").
В поле "Имя" указываем, например, "Telegram Bot via IFTTT".
В поле "Тип" выбираем "Скрипт".
В поле "Имя скрипта" вписываем имя созданного выше файла, например, zabbix-via-ifttt-to-telegram-notify.sh.
В разделе "Параметры скрипта" жмем три раза "Добавить" и вводим (по порядку сверху вниз):
Далее идем в Администрирование > Пользователи, выбираем своего пользователя, переходим в "Оповещения", жмем "Добавить".
В поле "Тип" выбираем созданный ранее способ оповещения, например, Telegram Bot via IFTTT.
В поле "Отправлять на" указываем свой Telegram ID. Как его узнать рассказано в шаге 2 в статье "Уведомления от Zabbix в Telegram".
Остальные поля на свой вкус.
Жмем "Добавить" и потом "Обновить". С пользователем готово.
Осталось сделать действие на триггер. Идем в Настройка > Действия, справа вверху в "Источник событий" выбираем "Триггеры" и жмем "Создать действие".
Действие нужно создавать аналогично как описано в статье "Уведомления от Zabbix в Telegram" в шаге 6. Я в разделе "Действие" указываю
В разделе "Операции" в поле "Тема по умолчанию" указываю "{TRIGGER.STATUS} {HOST.NAME}".
В поле "Сообщение по умолчанию" - "Trigger: {TRIGGER.NAME}\n{ITEM.NAME} = {ITEM.LASTVALUE}"
В разделе "Операции восстановления" все аналогично. Поле "Операции" не трогаем.
Готово. Теперь уведомления от заббикса будут прилетать в телегу в наш бот, как это было раньше (см. Уведомления от Zabbix в Telegram).
За сим отклоняюсь. Меньше вам алертов и стабильных серверов!
нформация с сайта http://blog.angel2s2.ru/.
Не долго думая, вспомнил, что у IFTTT с не очень недавних пор появилась поддержка webhooks. Через этот механизм я и решил сделать "новую" уведомлялку.
Есть два варианта:
1. Слать уведомления от бота IFTTT
2. Слать уведомления от своего бота, которого делал в "Уведомления от Zabbix в Telegram"
Рассмотрим оба варианта.
В обоих случаях нужно зарегистрироваться на IFTTT. После чего перейти в My Applets -> Services, в поле поиска ввести webhooks и тыкнуть по карточке "Webhooks" и там нажать кнопку "Connect". Далее справа вверху нажать кнопку "Documentation" и сохранить куда-нибудь "Your key is:", ключик скоро понадобится.
1. Слать уведомления от бота IFTTT
Для начал нужно добавить бота IFTTT в телегу. Открываем телегу и в поиске вводим "@ifttt", открываем бота и жмем старт.Теперь надо создать апплет ifttt. Открываем My Applets -> New Applets, тыкаем по синей надписи "this", вводим в поле поиска "webhooks" и тыкаем карточку, теперь выбираем карточку "Receive a web request" и в поле "Event Name" указываем название события без пробелов, например, "telegram_to_zabbix". Жмем кнопку "Create trigger".
Теперь тыкаем в синюю надпись "that", в поле поиска вводим "telegram", тыкаем карточку и выбираем "Send message". В поле "Message text" заменяем текст на
{{Value1}}<br>{{Value2}}<br>{{Value3}}, а в "Include web page preview?" выбираем "Disabled".
Жмем "Create action". Жмет "Finish". Готово.
Теперь надо сделать скрипт и настроить заббикс.
Коннектимся на сервер заббикса, идем в папку /etc/zabbix/alertscripts и создаем файл, например, zabbix-to-ifttt_telegram-notify.sh, в котором пишем следующий код:
#!/bin/bash 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 IFTTT_KEY="$1" SUBJECT="$2" MESSAGE="$3" IFTTT_EVENT='telegram_to_zabbix' curl -s -X POST -H "Content-Type: application/json" -d "{\"value1\":\"<b>${IFTTT_EVENT}</b>\",\"value2\":\"${SUBJECT}\",\"value3\":\"${MESSAGE}\"}" "https://maker.ifttt.com/trigger/${IFTTT_EVENT}/with/key/${IFTTT_KEY}" &>/dev/null if [ $? -eq 0 ] ; then exit 1 ; fiВ переменной "IFTTT_EVENT" нужно указать ту же строку, которую вводили в поле "Event Name" при создании апплета ifttt, например, telegram_to_zabbix.
И даем этому файлу права на выполнение:
chmod +x zabbix-to-ifttt_telegram-notify.sh
Далее открываем заббикс и переходим в Администрирование > Способы оповещения, жмем "Создать способ оповещения" (шаг 4 в "Уведомления от Zabbix в Telegram").
В поле "Имя" указываем, например, "IFTTT to Telegram Bot".
В поле "Тип" выбираем "Скрипт".
В поле "Имя скрипта" вписываем имя созданного выше файла, например, zabbix-to-ifttt_telegram-notify.sh.
В разделе "Параметры скрипта" жмем три раза "Добавить" и вводим (по порядку сверху вниз):
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
Далее идем в Администрирование > Пользователи, выбираем своего пользователя, переходим в "Оповещения", жмем "Добавить".
В поле "Тип" выбираем созданный ранее способ оповещения, например, IFTTT to Telegram Bot.
В поле "Отправлять на" указываем ключик, который мы получили на IFTTT в самом начале ("Your key is:").
Остальные поля на свой вкус.
Жмем "Добавить" и потом "Обновить". С пользователем готово.
Осталось сделать действие на триггер. Идем в Настройка > Действия, справа вверху в "Источник событий" выбираем "Триггеры" и жмем "Создать действие".
Действие нужно создавать аналогично как описано в статье "Уведомления от Zabbix в Telegram" в шаге 6. Я в разделе "Действие" указываю
A Состояние обслуживания не в обслуживании B Важность триггеров >= Высокая C Имя триггера не содержит test.
В разделе "Операции" в поле "Тема по умолчанию" указываю "{TRIGGER.STATUS} {HOST.NAME}".
В поле "Сообщение по умолчанию" - "Trigger: {TRIGGER.NAME}<br>{ITEM.NAME} = {ITEM.LASTVALUE}"
Обратите внимание на "<br>". Так необходимо обозначать перенос трок. Это поле должно состоять строго из одной строки. Иначе работать ничего не будет.
В поле "Операции" жмем "Новый". В "Отправлять только через" выбираем "IFTTT to Telegram Bot". В "Отправлять пользователям" жмем "Добавить" и выбираем своего пользователя. Я так же создаю "Условие" - "Событие подтверждено = Не подтверждено".В разделе "Операции восстановления" все аналогично. Поле "Операции" не трогаем.
Готово. Теперь уведомления от заббикса будут прилетать в телегу через бота IFTTT.
2. Слать уведомления от своего бота, которого делал в Уведомления от Zabbix в Telegram
Сначала нужно, как и пред. варианте, создать апплет ifttt. Открываем My Applets -> New Applets, тыкаем по синей надписи "this", вводим в поле поиска "webhooks" и тыкаем карточку, теперь выбираем карточку "Receive a web request" и в поле "Event Name" указываем название события без пробелов, например, "Zabbix_Notify_Bot". Жмем кнопку "Create trigger".
Теперь тыкаем в синюю надпись "that", в поле поиска снова вводим "webhooks", тыкаем карточку и выбираем "Make a web request
".
В поле "URL" вводим https://api.telegram.org/bot%ТОКЕН%/sendMessage. Подстроку %ТОКЕН% нужно заменить на свой токен. Как его получить смотри в шаге 1 в статье "Уведомления от Zabbix в Telegram". Либо можете использовать моего бота - https://api.telegram.org/bot179320554:AAHI9AeBkptHgMIh5pVs31CRzGHV_9sG8bs/sendMessage.
В поле "Method" выбираем "POST".
В поле "Content Type" выбираем "application/json".
В поле "Body" вводим {"chat_id":"{{Value1}}","text":"{{Value2}}\n{{Value3}}"}.
Жмем "Create action". Жмет "Finish". Готово.
Теперь нужно сделать скрипт.
Коннектимся на сервер заббикса, идем в папку /etc/zabbix/alertscripts и создаем файл, например, zabbix-via-ifttt-to-telegram-notify.sh, в котором пишем следующий код:
#!/bin/bash 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" IFTTT_EVENT='Zabbix_Notify_Bot' IFTTT_KEY='%ВАШ_КЛЮЧ%' curl -s -X POST -H "Content-Type: application/json" -d "{\"value1\":\"${CHAT_ID}\",\"value2\":\"${SUBJECT}\",\"value3\":\"${MESSAGE}\"}" "https://maker.ifttt.com/trigger/${IFTTT_EVENT}/with/key/${IFTTT_KEY}" &>/dev/null if [ $? -eq 0 ] ; then exit 1 ; fiВ переменной "IFTTT_EVENT" нужно указать ту же строку, которую вводили в поле "Event Name" при создании апплета IFTTT, например, Zabbix_Notify_Bot.
В переменной "IFTTT_KEY" нужно указать ключ, который мы получали на IFTTT в самом начале ("Your key is:").
Далее нужно этому файлу дать права на выполнение:
chmod +x zabbix-to-ifttt_telegram-notify.sh
Теперь надо настроить заббикс.
В Администрирование > Способы оповещения, жмем "Создать способ оповещения" (шаг 4 в "Уведомления от Zabbix в Telegram").
В поле "Имя" указываем, например, "Telegram Bot via IFTTT".
В поле "Тип" выбираем "Скрипт".
В поле "Имя скрипта" вписываем имя созданного выше файла, например, zabbix-via-ifttt-to-telegram-notify.sh.
В разделе "Параметры скрипта" жмем три раза "Добавить" и вводим (по порядку сверху вниз):
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
Далее идем в Администрирование > Пользователи, выбираем своего пользователя, переходим в "Оповещения", жмем "Добавить".
В поле "Тип" выбираем созданный ранее способ оповещения, например, Telegram Bot via IFTTT.
В поле "Отправлять на" указываем свой Telegram ID. Как его узнать рассказано в шаге 2 в статье "Уведомления от Zabbix в Telegram".
Остальные поля на свой вкус.
Жмем "Добавить" и потом "Обновить". С пользователем готово.
Осталось сделать действие на триггер. Идем в Настройка > Действия, справа вверху в "Источник событий" выбираем "Триггеры" и жмем "Создать действие".
Действие нужно создавать аналогично как описано в статье "Уведомления от Zabbix в Telegram" в шаге 6. Я в разделе "Действие" указываю
A Состояние обслуживания не в обслуживании B Важность триггеров >= Высокая C Имя триггера не содержит test.
В разделе "Операции" в поле "Тема по умолчанию" указываю "{TRIGGER.STATUS} {HOST.NAME}".
В поле "Сообщение по умолчанию" - "Trigger: {TRIGGER.NAME}\n{ITEM.NAME} = {ITEM.LASTVALUE}"
Обратите внимание на "\n". Так необходимо обозначать перенос трок. Это поле должно состоять строго из одной строки. Иначе работать ничего не будет.
В поле "Операции" жмем "Новый". В "Отправлять только через" выбираем "Telegram Bot via IFTTT". В "Отправлять пользователям" жмем "Добавить" и выбираем своего пользователя. Я так же создаю "Условие" - "Событие подтверждено = Не подтверждено".В разделе "Операции восстановления" все аналогично. Поле "Операции" не трогаем.
Готово. Теперь уведомления от заббикса будут прилетать в телегу в наш бот, как это было раньше (см. Уведомления от Zabbix в Telegram).
За сим отклоняюсь. Меньше вам алертов и стабильных серверов!
нформация с сайта http://blog.angel2s2.ru/.
Так будет лучше:
ОтветитьУдалить#!/bin/bash
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"
IFTTT_EVENT='Наше значение'
IFTTT_KEY='наш ключ'
RES=$(curl -s -X POST -H "Content-Type: application/json" -d "{\"value1\":\"${CHAT_ID}\",\"value2\":\"${SUBJECT}\",\"value3\":\"${MESSAGE}\"}" "https://maker.ifttt.com/trigger/${IFTTT_EVENT}/with/key/${IFTTT_KEY}")
if [ $? -ne 0 ]; then
echo 'FAIL: curl error'
exit 1
fi
if echo "$RES" | grep -q '"errors"'; then
echo 'FAIL: server error'
exit 1
fi
echo 'SUCCESS'
exit 0
Спасибо огромное автору, избавили меня от головной боли с обходом блокировки api.telegram.org. Оповещения работают как часы.
ОтветитьУдалитьZabbix 5.0 Ubuntu 20.04
ОтветитьУдалитьПри тестировании выдает:
Media type test failed.
Process exited with code: 1.
Но сообщение доходит.
скрипт от Aleksey ошибок не дает и тоже работает
ОтветитьУдалитьblogadaryu
ОтветитьУдалить