Есть для этого готовый бот и 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Где $1, $2, $3 переданные Zabbix’ом параметры: получатель, тема сообщения, сообщение.
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"
Данный скрипт сохраняем с произвольным именем, например. 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:
Собственно ничего сложного нет. Это настроить гораздо быстрее чем все это прочитать или тем более все это написать. Если возникнут трудности - пишите в комментарии. Постараюсь помочь.
Добрый день! Все перепроверил на сто раз. Выдает ошибку Timeout while executing a shell script. Таймаут в настройках сервера увеличил до 15.... не помогло.
Добрый день! Это в панель zabbix у вас данная ошибка или в логах? 1) Wget установлен? 2) Если заменить переменные в скрипте: $1 - Ваш токкен $2 - произвольный текст $2 - произвольный текст Вы получаете сообщение нормально? 3) Включите Debug=4 на стройках zabbix_server.conf и после срабатывания пришлите лог, что внутри?
Добрый день. Заббикс в журнале действий показывает что отчет ушел в телеграм. Но не вижу в телеграмме отчета в Cier bot.
Попробуйте через консоль выполнить: wget -O /dev/null "http://crierbot.appspot.com/ВАШ_ТОКЕН/send?message=TEST" Что получите в ответ? Если токен верный, то от бота Вы получите сообщение - TEST.
Добрый день подскажите пожалуйста,уже несколько дней не могу настроить, в журнале ошибка /usr/local/etc/zabbix34/zabbix/alertscripts/telegram.sh: not found в чем может быть проблема?
В ошибке как то явно написано что не может найти данный файл, скрипт лежит там? А если выполнить: ls -l /usr/local/etc/zabbix34/zabbix/alertscripts/ Вывод можете написать сюда или в чат телеграмм: https://t.me/sysadminnote
вручную скрипт отрабатывает
dd 12.12.2017 17: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.
отбой, кавычки должны быть одинарные, &...&
wget -O /dev/null выдает Missing: Command not found. сделал все по инструкции, wget установлен, заббикс 3.2
wget -O /dev/null «http://crierbot.appspot.com/мой токен/send?message=TEST»
Виталий 02.02.2018 05:17
попробуйте без параметров запустить, просто wget http://crierbot.appspot.com/мой токен/send?message=TEST
Юрий 04.02.2018 22:21
Отправил без параметров, оказало нет wget, установил, такая же беда (freebsd11) на centos нормально получилось отправить, где искать, подскажите проблему, freebsd 11 wget установлен.
wget: no match
система обновляется регулярно? У меня у самого на freebsd 11 вертится zabbix. Только что проверил, все работает. Попробуйте обновить пакеты и переустановить wget
Здравствуйте. Настроил по описанию. Сделал вручную отправку wget -O /dev/null "http://crierbot.appspot.com/4yegsYkUXI0FPAW…MomjfEuK/send?message=TEST" все отлично. В ZABBIX сработал триггер, написано, что "Отправлено", но ничего не пришло. Токен перепроверил - правильный. Подскажите, где можно посмотреть логи? ОС: Linux CentOS ZABBIX: 3.2.11
Добавлю. Действие использую такое же, что и по умолчанию для EMAIL.
Виталий 26.02.2018 05:51
Здравствуйте. Токен не забыли внести в профиль? ) Включить на zabbix_server.conf: DebugLevel=4 Перезапустить сервер и смотреть лог по пути /var/log/zabbix/zabbix_server.log Возможно заббикс не находит wget, попробуйте не просто wget в начале, а вот так: /usr/bin/wget «http://crierbot.appspot.co....
Заработало. Блокнот Windows поставил какие-то метки. Убрал их и все заработало. Большое спасибо за статью )
блокнот он такой )) Не за что ;-)
Здравствуйте. Настроил по описанию. Сделал вручную отправку 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) Подскажите пожалуйста что нужно поправить. За ранее большое спасибо!
Здравствуйте! А откуда пробела у Вас после знака "равно" в: wget -O /dev/null «http://crierbot.appspot.com/$1/send?message= Subject: $2 Это Вы так скопировали от себя? Если да, то попробуйте его убрать от туда, привести к виду: ...ot.com/$1/send?message=Subje...
Убрал, привел к виду: #!/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
Если заменить $1 на Ваш токен и $2 и $3 на любой тескт, и выполнить скрипт, что будет?
Скрипт выполняет как вручную, так и при срабатывании триггера zabbix и от бота приходит этот самый любой текст.
ХМ... Очень странно... Что с параметрами не так получается. Попробуйте обновить zabbix, проверьте правильность параметром (попробуйте не скопировать, а написать вручную их). Возможно не верно копируется какой либо символ или берется как то пробел в начале или конце...
Здравствуйте, будете что нибудь делать с обходом блокировки ркн? Заббикс перестал слать в телегу?
--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 05:08
CrierBot хостится на Американских серверах, в GAE, поэтому проблем с отправкой возникать не должно... Только в работе Вашего клиента возможны перебои. И да, данный бот - это не моя разработка) Я просто описал инструкцию, как его настроить.
Юрий 19.04.2018 00:58
Проблем то нету, сегодня все отправляется нормально, вчера вечером тоже. Просто в один момент пытался отправить выдал такую ошибку, что к хосту не может подцепится, подумал может блокировка.
И Крыма не работает - ERROR 403: Forbidden. :( Санкции... :( :( :(
Вы уверены, что это санкции? Может быть что то не так делаете или какой лишний символ в строке? Можете скинуть запрос-ответ, если вручную запустить скрипт?
А можете написать как настроить оповещения из Zabbix в группу в Telegram через Crier но с возможностью вставлять графики ?
Ну с графиками через Crier не получится отправлять, это через Python скрипт надо делать. Хорошо, я напишу на днях, как это делать.
А как добавить еще контакты в общий чат с ботом?
Если делать в общий чат, а не на человека, то надо добавить бота в общий чат и после этого написать в чате /start, бот выдаст токен на чат и будет писать в него
Добрый день, где можно искать проблему, если в телеграм отправляются не полные сообщения из заббикса (урезается до определенного количества символов?
На сколько большие сообщения у Вас выходят? Не сталкивался с такой проблемой. Может Бот передает не более скольких то символов? Попробуйте все свое сообщение отправить напрямую через WGET, подставив свой токен, если пройдет полностью, то смотреть уже заббикс, если нет - то вопрос к боту
Сообщения в телеграм приходят в размере 130 символов, сами сообщения раза в 4 больше должно быть.
артём 20.03.2019 12: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»
Кавычки есть скрипте?
что-то случилось с сервером(( 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.
Пробуйте еще раз или что то провайдер ваш не пускает. Вот только что проверил, сообщение пришло [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]
Привет, а возможно ли сделать оповещения на русском?
Добрый день. Конечно можно. Напишите в $3 по русски, и будет на русском приходить. У меня на скриншотах же на русском.
я имею в виду, чтобы вместо Problem писало Проблема и тд. Я написал так в S3 но не получается Начало проблемы {EVENT.TIME} on {EVENT.DATE} Имя триггера: {EVENT.NAME} Host: {HOST.NAME} Важность: {EVENT.SEVERITY} Original problem ID: {EVENT.ID} {TRIGGER.URL}
Саму Problem как статус переименовать не получится, а так - переименовывать сами триггеры в русский...
Кто купался на крещение?