Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программное обеспечение Linux и FreeBSD (http://forum.oszone.net/forumdisplay.php?f=11)
-   -   Не приходят уведомления в Telegram (http://forum.oszone.net/showthread.php?t=327557)

Vandercast 13-06-2017 09:50 2744113

Не приходят уведомления в Telegram
 
Вложений: 4
Всем привет! Задался вопросом настройки 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 2744146

Посмотрите в самом Zabbix, Monitoring - Problems, в поле Actions будут Failures, и там Info, где будет описание, почему зафейлилось оповещение.
Заббикс у меня не русифицирован, потому как указанные поля выглядят у вас могу лишь догадываться.

Vandercast 13-06-2017 15:58 2744220

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 2744224

То есть, с точки зрения заббикса всё гладко?

Попробуйте получить дамп респонс хедеров, может там будет что-то.
Код:

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 2744227

Да, с его точки зрения все, ок. Спасибо, сейчас попробую.

Vandercast 13-06-2017 16:39 2744232

Создается впечатление, что 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 2744458

Цитата:

Цитата Vandercast
Создается впечатление, что 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 2744475

Итак, после множества тщетных попыток, стала ясна одна вещь - 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 2744494

Цитата:

Цитата Vandercast
Zabbix не передает параметр chat_id в скрипт. »

Цитата:

Цитата Jula0071
Вы точно подключили своему юзеру нужное Media? »

Administration - Users - ваш юзер - Media, в Send To - ваш chat_id.

Vandercast 14-06-2017 14:18 2744516

Цитата:

Цитата Jula0071
Administration - Users - ваш юзер - Media, в Send To - ваш chat_id. »

Тип Отправлять на Когда активен Использовать, если важность Status Действие
Telegram 2827***** 1-7,00:00-24:00 НИПСВЧ Активировано

Jula0071 14-06-2017 15:45 2744552

В общем, заинтересовался я сам вариантом с телеграммом, взял правда другой скрипт - https://github.com/ableev/Zabbix-in-Telegram
Всё работает, в Send To прописал юзернейм, который можно настроить в клиенте.

Vandercast 21-06-2017 16:01 2746446

Цитата:

Цитата Jula0071
Send To прописал юзернейм, который можно настроить в клиенте »

Свой ник из Телеграма? А что именно настраивается в клиенте, не подскажете? Сам решил использовать ableev, потому, что прошлый способ не заводится совсем

Jula0071 22-06-2017 11:18 2746602

Цитата:

Цитата Vandercast
Свой ник из Телеграма? »

Угу, Username.
Цитата:

Цитата Vandercast
А что именно настраивается в клиенте, не подскажете? »

Да собственно этот ник. Telegram же к телефонному номеру привязывается, но можно в самом клиенте выбрать себе юзернейм.


Время: 16:31.

Время: 16:31.
© OSzone.net 2001-