Показать полную графическую версию : Не приходят уведомления в Telegram
Vandercast
13-06-2017, 09:50
Всем привет! Задался вопросом настройки Zabbix, столкнулся с проблемой, не приходят уведомления в Telegram.
Общая информация:
- Zabbix 3.2.3
- OS FreeBSD 11.0.
Тело используемого скрипта:
# vim /usr/local/etc/zabbix32/zabbix//alertscripts/zabbix_notify.sh
#!/usr/local/bin/bash
TOKEN='тут мой токен'
which curl &>/tmp/telegram.log
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" | $
if [ $? -eq 0 ] ; then exit 1 ; fi
Владельцем файла назначен zabbix.
Выполнена команда: chmod +x zabbix_notify.sh
Скрины настроек Zabbix во вложении:
Уведомления исправно приходят на email но не в телеграм.
Если запускать скрипт вручную от любого пользователя, с параметрами:
./zabbix_notify.sh "my ID" "test" "test"
Все, так же исправно.
Надеюсь кто-то подскажет, в чем может быть проблема.
Jula0071
13-06-2017, 11:34
Посмотрите в самом Zabbix, Monitoring - Problems, в поле Actions будут Failures, и там Info, где будет описание, почему зафейлилось оповещение.
Заббикс у меня не русифицирован, потому как указанные поля выглядят у вас могу лишь догадываться.
Vandercast
13-06-2017, 15:58
11.06.2017 22:53:38 Telegram Triggers Telegram Admin (Zabbix Administrator) 282749432 Тема:PROBLEM:Ping state
Сообщение:
Trigger: Ping state
Status: PROBLEM
Severity: Warning
Last value: Down (0)
IP address 192.168.0.101
Item values:
1.ICMP ping (mail.intevtt.gr:icmpping): Down (0)
Original event ID: 77 Отправлено
Вот все, вроде бы, ок. Но в телеграм не приходят, на мыло приходят нормально.
Jula0071
13-06-2017, 16:06
То есть, с точки зрения заббикса всё гладко?
Попробуйте получить дамп респонс хедеров, может там будет что-то.
curl --dump-header /tmp/dump.txt -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${CHAT_ID}\",\"text\":\"${SUBJECT}\n${MESSAGE}\"}" "https://api.telegram.org/bot${TOKEN}/sendMessage" | $
-D, --dump-header <file>
Write the protocol headers to the specified file.
This option is handy to use when you want to store the headers that an HTTP site sends to you. Cookies from the headers could then be read in a second curl invocation by
using the -b, --cookie option! The -c, --cookie-jar option is a better way to store cookies.
When used in FTP, the FTP server response lines are considered being "headers" and thus are saved there.
If this option is used several times, the last one will be used.
Vandercast
13-06-2017, 16:19
Да, с его точки зрения все, ок. Спасибо, сейчас попробую.
Vandercast
13-06-2017, 16:39
Создается впечатление, что zabbix вообще не дергает даже скрипт. Если выполняю вручную скрипт с параметрами - "ID" test test - все приходит. И в dump.txt:
HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Tue, 13 Jun 2017 13:35:53 GMT
Content-Type: application/json
Content-Length: 217
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection
Strict-Transport-Security: max-age=31536000; includeSubdomains
Если жду алерта от Zabbix, то ничего не происходит, совсем.
Jula0071
14-06-2017, 12:29
Создается впечатление, что zabbix вообще не дергает даже скрипт. »
Он бы об этом написал.
Попробуйте в скрипте полный путь к curl прописать. Хотя там проверки есть... И на exit code тоже есть проверка. Вы точно подключили своему юзеру нужное Media?
UPD Подозреваю, что проблема кроется ещё и тут:
which curl &>/tmp/telegram.log
Когда вы проверяли скрипт от другого пользователя, этот лог был создан с овнером текущего юзера, а при umask 022 никто, кроме рута не может писать в чужой файл. Скрипт на этом при запуске от юзера заббикса фейлится. Почему это в заббиксе не отражается, не пойму. Скрипт измените так:
which curl &>/dev/null
if [ $? -ne 0 ] ; then echo 'FAIL: curl not found.' && exit 1 ; fi
dump.txt тоже не забудьте удалить
Vandercast
14-06-2017, 13:25
Итак, после множества тщетных попыток, стала ясна одна вещь - Zabbix не передает параметр chat_id в скрипт.
После создания скрипта с таким содержимым:
#!/bin/bash
echo $0 $1 $2 $3 $4 $5 > /tmp/tg.log
В логфайле /tmp/tg.log -
[zabbix@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]$ cat /tmp/tg.log
Original event ID: 91erconnect.gr:icmpping): Up (1)2749482 OK:Ping state Trigger: Ping state
[zabbix@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]$
Соответственно, буду копать в этом направлении. Может, кто сталкивался с таким?
Jula0071
14-06-2017, 13:48
Zabbix не передает параметр chat_id в скрипт. »
Вы точно подключили своему юзеру нужное Media? »
Administration - Users - ваш юзер - Media, в Send To - ваш chat_id.
Vandercast
14-06-2017, 14:18
Administration - Users - ваш юзер - Media, в Send To - ваш chat_id. »
Тип Отправлять на Когда активен Использовать, если важность Status Действие
Telegram 2827***** 1-7,00:00-24:00 НИПСВЧ Активировано
Jula0071
14-06-2017, 15:45
В общем, заинтересовался я сам вариантом с телеграммом, взял правда другой скрипт - https://github.com/ableev/Zabbix-in-Telegram
Всё работает, в Send To прописал юзернейм, который можно настроить в клиенте.
Vandercast
21-06-2017, 16:01
Send To прописал юзернейм, который можно настроить в клиенте »
Свой ник из Телеграма? А что именно настраивается в клиенте, не подскажете? Сам решил использовать ableev, потому, что прошлый способ не заводится совсем
Jula0071
22-06-2017, 11:18
Свой ник из Телеграма? »
Угу, Username.
А что именно настраивается в клиенте, не подскажете? »
Да собственно этот ник. Telegram же к телефонному номеру привязывается, но можно в самом клиенте выбрать себе юзернейм.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.