Заметки сисадмина

Оповещения Zabbix через Telegram

Вы хотите получать уведомления с Zabbix через Telegram? Нет ничего проще!

Оповещения Zabbix через Telegram

Есть для этого готовый бот и Telegram API

Бот присылает все, что было в специальном HTTP GET запросе вида:

http://crierbot.appspot.com/@token@/send?message=@message@

TOKEN — токен выданный ботом при его добавлении в список контактов Telegram

MESSAGE — собственно сообщение, которые хотите передать.

Итак, давайте разбираться, что нам для этого надо и что мы получим в итоге.

Добавление бота


Для начала добавляем себе в Telegram бота @crierbot и нажимаем START

 

После нажатия на START бот пришлет нам уникальный ключ "Token"

Ну вот и все. На этом наше общение с ботом окончено. Теперь только он нам будет писать то, что нам необходимо.

Настройка Zabbix Telegram


Zabbix умеет отправлять оповещения, используя скрипт. Zabbix отправляет 3 параметра: получатель, тема сообщения, текст сообщения.

Создание скрипта


Давайте напишем скрипт, который и будет передавать нам информацию из Zabbix нашему боту, который в свою очередь будет передавать ее нам:
#!/bin/bash

PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin wget -O /dev/null "http://crierbot.appspot.com/$1/send?message=Subj: $2 || Message:$3"
Где $1, $2, $3 переданные Zabbix’ом параметры: получатель, тема сообщения, сообщение.

Данный скрипт сохраняем с произвольным именем, например. telegram.sh в директорию Zabbix’а, где хранятся скрипты уведомлений (в Freebsd по умолчанию это директория:
/usr/local/zabbix32/zabbix/alertscripts/     -       (Для версии 3.2)

Делаем наш скрипт исполняемым:

chmod +x /usr/local/zabbix32/zabbix/alertscripts/telegram.sh

Выдаем zabbix права на этот скрипт:
chown zabbix:zabbix /usr/local/zabbix32/zabbix/alertscripts/telegram.sh

Настройка способа оповещения через telegram


Теперь переходим в веб-интерфейс Zabbix’а и переходим по Меню: «Администрирование» -> «Способы оповещения» и нажимаем «Создать способ оповещения»

Тут заполняем:

Имя - Произвольное

Тип - Скрипт

Имя скрипта - так, как вы назвали скрипт при его создании

Параметры срипта:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

(Это как раз и есть наши $1, $2 и $3)

И ставим галочку "Активировано"

И нажимаем Добавить (у меня обновить, так как он уже создан у меня)

Добавление способа оповещения пользователю


Далее заходим в "Администрирование" -> "Пользователи". Выбираем нашего пользователя и переходим на вкладку "Оповещения" и нажимаем "Добавить"

В появившемся окне выбираем тип - под каким именем мы создали действие, вставляем наш токен, который выдал нам бот и нажимаем "Добавить"

После этого у пользователя в Оповещениях появится новый способ оповещения. Нажимаем "Обновить".

Теперь нам осталось только создать действий, по которому нам будет приходить какое-либо сообщение.

Настройка действий


Итак, приступим к созданию действия. Для этого переходим в "Настройка" -> "Действия". Справа вверху где "Источник событий" выбираем" Триггеры. Нажимаем "Создать действие".

Действие:

 

Имя - Пишем любое понятное для нас имя

Условие - Настраиваем условие, при котором будет происходит наше действие (ниже я приведу пример 1 из своих действий)

Операции:

Выбираем что будет присылаться нам во время срабатывание нашего условия

В операциях нажимаем Новый и добавляем наш способ оповещения:

Должно получиться что то типа вот этого.

На вкдадке Операции восстановления Выбираем в операциях "оповещение о восстановлении", чтобы знать, что проблема ушла.

И нажимаем "Добавить". В принцип на этом этапе мы уже все настроили!

Заключение


Вот пример одного из моих действий. У меня есть триггер на температуру CPU моего NAS. Его я и использовал:

Вот что мы в принципе видим в окне самого Telegram:

Собственно ничего сложного нет. Это настроить гораздо быстрее чем все это прочитать или тем более все это написать. Если возникнут трудности - пишите в комментарии. Постараюсь помочь.

Поделиться
Комментарии
Глеб 26.07.2017 08:44
Добрый день! Все перепроверил на сто раз. Выдает ошибку Timeout while executing a shell script. Таймаут в настройках сервера увеличил до 15.... не помогло.
Admin 26.07.2017 09:31
Добрый день! Это в панель zabbix у вас данная ошибка или в логах? 1) Wget установлен? 2) Если заменить переменные в скрипте: $1 - Ваш токкен $2 - произвольный текст $2 - произвольный текст Вы получаете сообщение нормально? 3) Включите Debug=4 на стройках zabbix_server.conf и после срабатывания пришлите лог, что внутри?
Андрей 27.10.2017 09:43
Добрый день. Заббикс в журнале действий показывает что отчет ушел в телеграм. Но не вижу в телеграмме отчета в Cier bot.
Admin 27.10.2017 16:00
Попробуйте через консоль выполнить: wget -O /dev/null "http://crierbot.appspot.com/ВАШ_ТОКЕН/send?message=TEST" Что получите в ответ? Если токен верный, то от бота Вы получите сообщение - TEST.
Александр 20.11.2017 09:54
Добрый день подскажите пожалуйста,уже несколько дней не могу настроить, в журнале ошибка /usr/local/etc/zabbix34/zabbix/alertscripts/telegram.sh: not found в чем может быть проблема?
Admin 20.11.2017 11:25
В ошибке как то явно написано что не может найти данный файл, скрипт лежит там? А если выполнить: ls -l /usr/local/etc/zabbix34/zabbix/alertscripts/ Вывод можете написать сюда или в чат телеграмм: https://t.me/sysadminnote
Александр 20.11.2017 09:57
вручную скрипт отрабатывает
dd 12.12.2017 18:48
что-то вручную проверку не проходит. отправляю запрос wget -O /dev/null «http://crierbot.appspot.com/4yegsYkUXI0FPAW...MomjfEuK/send?message=TEST» получаю ответ «http://crierbot.appspot.com/4yegsYkUXI0FPAW...ZMomjfEuK/send?message=TEST»: Scheme missing.
dd 12.12.2017 18:51
отбой, кавычки должны быть одинарные, &...&
Юрий 02.02.2018 03:10
wget -O /dev/null выдает Missing: Command not found. сделал все по инструкции, wget установлен, заббикс 3.2
Юрий 02.02.2018 03:11
wget -O /dev/null «http://crierbot.appspot.com/мой токен/send?message=TEST»
Виталий 02.02.2018 06:17
попробуйте без параметров запустить, просто wget http://crierbot.appspot.com/мой токен/send?message=TEST
Юрий 04.02.2018 23:21
Отправил без параметров, оказало нет wget, установил, такая же беда (freebsd11) на centos нормально получилось отправить, где искать, подскажите проблему, freebsd 11 wget установлен.
Юрий 04.02.2018 23:23
wget: no match
Виталий 05.02.2018 06:43
система обновляется регулярно? У меня у самого на freebsd 11 вертится zabbix. Только что проверил, все работает. Попробуйте обновить пакеты и переустановить wget
Максим 26.02.2018 06:09
Здравствуйте. Настроил по описанию. Сделал вручную отправку wget -O /dev/null "http://crierbot.appspot.com/4yegsYkUXI0FPAW…MomjfEuK/send?message=TEST" все отлично. В ZABBIX сработал триггер, написано, что "Отправлено", но ничего не пришло. Токен перепроверил - правильный. Подскажите, где можно посмотреть логи? ОС: Linux CentOS ZABBIX: 3.2.11
Максим 26.02.2018 06:12
Добавлю. Действие использую такое же, что и по умолчанию для EMAIL.
Виталий 26.02.2018 06:51
Здравствуйте. Токен не забыли внести в профиль? ) Включить на zabbix_server.conf: DebugLevel=4 Перезапустить сервер и смотреть лог по пути /var/log/zabbix/zabbix_server.log Возможно заббикс не находит wget, попробуйте не просто wget в начале, а вот так: /usr/bin/wget «http://crierbot.appspot.co....
Максим 26.02.2018 11:56
Заработало. Блокнот Windows поставил какие-то метки. Убрал их и все заработало. Большое спасибо за статью )
Виталий 26.02.2018 12:16
блокнот он такой )) Не за что ;-)
Денис 16.03.2018 08:10
Здравствуйте. Настроил по описанию. Сделал вручную отправку wget -O /dev/null «http://crierbot.appspot.com/TOKEN/send?message=TEST» все отлично. Test пришел. Триггер срабатывает, но сообщение не оправляется выдаёт ошибку: Connecting to crierbot.appspot.com (74.125.200.153:80) wget: server returned error: HTTP/1.1 400 Bad Request /usr/lib/zabbix/alertscripts/telegram.sh: line 3: Message:: command not found Полагаю что-то не так с переменными {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}. Я их добавил аналогично инструкции. Но по каким-то причинам скорее всего они не передаются в скрипт. Сейчас скрипт имеет вид: #!/bin/bash PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin wget -O /dev/null "http://crierbot.appspot.com/$1/send?message= Subject: $2 || Message: $3" Да нужно уточнить что если скрипт имеет вид: #/bin/bash PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin wget -O /dev/null http://crierbot.appspot.com/$1/send?message=$2 то пришло сообщение: PROBLEM (это значение переменной {TRIGGER.STATUS} но если посмотреть по Action log то сообщение не отправилось и и вот такая ошибка: Connecting to crierbot.appspot.com (74.125.200.153:80) wget: bad address &TRIGGER.NAME}& /usr/lib/zabbix/alertscripts/telegram.sh: line 3: Problem: command not found) Подскажите пожалуйста что нужно поправить. За ранее большое спасибо!
Виталий 16.03.2018 08:35
Здравствуйте! А откуда пробела у Вас после знака "равно" в: wget -O /dev/null «http://crierbot.appspot.com/$1/send?message= Subject: $2 Это Вы так скопировали от себя? Если да, то попробуйте его убрать от туда, привести к виду: ...ot.com/$1/send?message=Subje...
Денис 16.03.2018 08:53
Убрал, привел к виду: #!/bin/bash PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin wget -O /dev/null "http://crierbot.appspot.com/$1/send?message=Subject: $2 || Message: $3" Connecting to crierbot.appspot.com (74.125.200.153:80) wget: server returned error: HTTP/1.0 400 Bad Request
Виталий 16.03.2018 10:03
Если заменить $1 на Ваш токен и $2 и $3 на любой тескт, и выполнить скрипт, что будет?
Денис 16.03.2018 10:32
Скрипт выполняет как вручную, так и при срабатывании триггера zabbix и от бота приходит этот самый любой текст.
Виталий 16.03.2018 11:47
ХМ... Очень странно... Что с параметрами не так получается. Попробуйте обновить zabbix, проверьте правильность параметром (попробуйте не скопировать, а написать вручную их). Возможно не верно копируется какой либо символ или берется как то пробел в начале или конце...
Юрий 18.04.2018 03:10
Здравствуйте, будете что нибудь делать с обходом блокировки ркн? Заббикс перестал слать в телегу?
Юрий 18.04.2018 03:45
--2018-04-18 12:44:26-- http://crierbot.appspot.com/мойтокен/send?message=TEST Resolving crierbot.appspot.com (crierbot.appspot.com)... 2a00:1450:4010:c07::99, 64.233.164.153 Connecting to crierbot.appspot.com (crierbot.appspot.com)|2a00:1450:4010:c07::99|:80... failed: Address family not supported by protocol family. Connecting to crierbot.appspot.com (crierbot.appspot.com)|64.233.164.153|:80... connected. HTTP request sent, awaiting response... 500 Internal Server Error 2018-04-18 12:44:32 ERROR 500: Internal Server Error.
Виталий 18.04.2018 07:08
CrierBot хостится на Американских серверах, в GAE, поэтому проблем с отправкой возникать не должно... Только в работе Вашего клиента возможны перебои. И да, данный бот - это не моя разработка) Я просто описал инструкцию, как его настроить.
Юрий 19.04.2018 02:58
Проблем то нету, сегодня все отправляется нормально, вчера вечером тоже. Просто в один момент пытался отправить выдал такую ошибку, что к хосту не может подцепится, подумал может блокировка.
ASphinx 04.05.2018 06:27
И Крыма не работает - ERROR 403: Forbidden. :( Санкции... :( :( :(
Виталий 04.05.2018 07:47
Вы уверены, что это санкции? Может быть что то не так делаете или какой лишний символ в строке? Можете скинуть запрос-ответ, если вручную запустить скрипт?
Mich777 10.09.2018 12:22
А можете написать как настроить оповещения из Zabbix в группу в Telegram через Crier но с возможностью вставлять графики ?
Виталий 10.09.2018 12:44
Ну с графиками через Crier не получится отправлять, это через Python скрипт надо делать. Хорошо, я напишу на днях, как это делать.
Денис 10.10.2018 21:08
А как добавить еще контакты в общий чат с ботом?
Виталий 11.10.2018 10:47
Если делать в общий чат, а не на человека, то надо добавить бота в общий чат и после этого написать в чате /start, бот выдаст токен на чат и будет писать в него
Лилия 12.02.2019 12:11
Добрый день, где можно искать проблему, если в телеграм отправляются не полные сообщения из заббикса (урезается до определенного количества символов?
Виталий 12.02.2019 13:38
На сколько большие сообщения у Вас выходят? Не сталкивался с такой проблемой. Может Бот передает не более скольких то символов? Попробуйте все свое сообщение отправить напрямую через WGET, подставив свой токен, если пройдет полностью, то смотреть уже заббикс, если нет - то вопрос к боту
Лилия 13.02.2019 09:23
Сообщения в телеграм приходят в размере 130 символов, сами сообщения раза в 4 больше должно быть.
артём 20.03.2019 13:38
через консоль отправляет нормально В самом zabbix ерунду пишет 2019-03-20 17:38:48-- http://crierbot.appspot.com/TOKEN/send?message=Subj:Problem:%20Test%20%D1%82%D0%B5%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0%20%7C%7C%20Message:TRIGGER:%20Test%20%D1%82%D0%B5%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0%0D%0AHOST:%20Schneider_Secondary%0D%0AIMPORTANCE:%20Not%20classified%0D%0ANOMBER%2010363%0D%0A Распознаётся crierbot.appspot.com (crierbot.appspot.com)... ошибка: Имя или служба не известны. wget: не удаётся разрешить адрес «crierbot.appspot.com»
Виталий 21.03.2019 07:49
Кавычки есть скрипте?
Виталий 19.07.2019 10:25
что-то случилось с сервером(( wget -O /dev/null http://crierbot.appspot.com/Nr4bEYcL...GfPQ3i7dC9RZO/send?message=TEST --2019-07-19 17:18:48-- http://crierbot.appspot.com/Nr4bEYcL...GfPQ3i7dC9RZO/send?message=TEST Resolving crierbot.appspot.com (crierbot.appspot.com)... 64.233.165.153, 2a00:1450:4010:c08::99 Connecting to crierbot.appspot.com (crierbot.appspot.com)|64.233.165.153|:80... connected. HTTP request sent, awaiting response... 500 Internal Server Error 2019-07-19 17:18:49 ERROR 500: Internal Server Error.
Виталий 19.07.2019 11:45
Пробуйте еще раз или что то провайдер ваш не пускает. Вот только что проверил, сообщение пришло [root@zabbix ~]# wget -O /dev/null http://crierbot.appspot.com/LhbTlCHK.....4gqnwN8kGfE9aJz/send?message=TEST --2019-07-19 14:44:37-- http://crierbot.appspot.com/LhbTlCHK.....4gqnwN8kGfE9aJz/send?message=TEST Resolving crierbot.appspot.com (crierbot.appspot.com)... 64.233.162.153, 2a00:1450:4010:c05::99 Connecting to crierbot.appspot.com (crierbot.appspot.com)|64.233.162.153|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 0 [text/html] Saving to: ‘/dev/null’ [ <=> ] 0 --.-K/s in 0s 2019-07-19 14:44:38 (0.00 B/s) - ‘/dev/null’ saved [0/0]
Эйч 08.08.2019 05:55
Привет, а возможно ли сделать оповещения на русском?
Виталий 08.08.2019 06:12
Добрый день. Конечно можно. Напишите в $3 по русски, и будет на русском приходить. У меня на скриншотах же на русском.
Эйч 08.08.2019 10:29
я имею в виду, чтобы вместо Problem писало Проблема и тд. Я написал так в S3 но не получается Начало проблемы {EVENT.TIME} on {EVENT.DATE} Имя триггера: {EVENT.NAME} Host: {HOST.NAME} Важность: {EVENT.SEVERITY} Original problem ID: {EVENT.ID} {TRIGGER.URL}
Виталий 08.08.2019 17:55
Саму Problem как статус переименовать не получится, а так - переименовывать сами триггеры в русский...
ElenaGug 10.02.2020 18:22
Кто купался на крещение?
Максим Орлов

Ваш покорный слуга - компьютерщик широкого профиля: системный администратор, вебмастер, интернет-маркетолог и много чего кто. Вместе с Вами, если Вы конечно не против, разовьем из обычного блога крутой технический комплекс.

Оставить комментарий

Ваш Email адрес не будет опубликован. Все обязательные поля обозначены *