ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Инструменты (https://forum.antichat.xyz/forumdisplay.php?f=176)
-   -   Zabbix. Уведомления в Telegram (https://forum.antichat.xyz/showthread.php?t=1619768)

Vander 10.06.2017 16:10

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

https://forum.antichat.xyz/attachmen...2d35c7abe1.png

https://forum.antichat.xyz/attachmen...7f6ae584cd.png

https://forum.antichat.xyz/attachmen...3422ab2d8c.png

https://forum.antichat.xyz/attachmen...fba94568cb.png

Уведомления исправно приходят на email но не в телеграм.
Если запускать скрипт вручную от любого пользователя, с параметрами:
./zabbix_notify.sh "my ID" "test" "test"
Все, так же исправно.
Надеюсь кто-то подскажет, в чем может быть трабл.

Vertigo 10.06.2017 17:20

Если я верно понял,то используется такая конфигурация
https://blog.amet13.name/2017/03/zabbix-telegram.html
Можно свериться и обратить внимание на строку # vim /usr/lib/zabbix/ там не прописывается local
Надеюсь,что пригодится.
[doublepost=1497100849,1497099885][/doublepost]Но для начала стоит попробовать в строке #!/usr/local/bin/bash написать #! /bin/bash в самом начале,т.к.
это является правилом и началом любого bash-скрипта.

Vander 10.06.2017 18:23

Цитата:


Vertigo сказал(а):

Если я верно понял,то используется такая конфигурация


Верно, остальное сейчас попробую. Спасибо.
[doublepost=1497104636,1497104138][/doublepost]




Код:


Код:

# vim /usr/local/etc/zabbix32/zabbix/alertscripts/zabbix_notify.sh

#! /usr/local/bin/bash

TOKEN='3846MYTOKENY9DCfE'

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" | grep -$

if [ $? -eq 0 ] ; then exit 1 ; fi

Привел, скрипт к такому виду, по прежнему не сработало, хотя в журнале

https://forum.antichat.xyz/attachmen...a1393e9777.png

Vertigo 11.06.2017 10:27

Не могу понять ,почему строки нет в скрипте такой: #!/bin/bash
А если вот так попробовать:
1.) убираем строку #!/usr/local/bin/bash , вместо неё пишем просто #!/bin/bash
2.) Строку curl -s --header...приводим к такому виду
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" | grep -q '"ok":false,'
3.) Команда на исполняемость скрипта : chmod +x /usr/local/zabbix32/zabbix/alertscripts/telegram.sh

Вариант 2 . Могут быть проблемы,если при настройке не указать реальное имя хоста ,указанное в веб- интерфейсе (Hostname=Zabbix server).

Vander 11.06.2017 12:55

Код:


Код:

# vim /usr/local/etc/zabbix32/zabbix/alertscripts/zabbix_notify.sh

#!/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" | grep -q '"ok":false,'

if [ $? -eq 0 ] ; then exit 1 ; fi

Привел к такому виду, все же не помогло.
Цитата:


Vertigo сказал(а):

Вариант 2


Вот тут не совсем понял

Vertigo 11.06.2017 13:39

Цитата:


Vander сказал(а):

Код:


Код:

Вот тут не совсем понял

Код:

Рекомендуют в настройке Zabbix в интерфейсе указывать реальное имя машины (хоста)
Вот ещё неплохой разбор этой темы с комментариями к решению проблем
http://blog.angel2s2.ru/2016/03/zabbix-telegram.html

[/QUOTE]

Vander 13.06.2017 17:46

Вообще никак))

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

Добавил строку в скрипт - curl --dump-header /tmp/dump.txt -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${CHAT_ID}\",\"text\":\"${SUBJ ECT} \n${MESSAGE}\"}" "https://api.telegram.org/bot${TOKEN}/sendMessage" | $

Если жду алерта от Zabbix, то ничего не происходит, совсем.

Vertigo 14.06.2017 02:30

Засада какая-то.Что ещё можно проверить и пробовать:
1.Владельца скрипта и пользователь ,от которого он запущен.
Пробовать запустить скрипт от этого пользователя.
2.Вместо localhost пробовать указать 127.0.0.1 ,или наоборот.
Параллельно отключить DBSocket (если такой есть)
3. Вкладка администрирование-пользователи,выбираем нужного польз-ля
Далее,перейти во вкладку "оповещение"- жмём добавить -"способ оповещения"-Telegram
Ввести токен в поле "Отправить .." и добавить этот способ оповещения в меню "настройки-действия"
В веб-интерфейсе вроде всё активировано и указано,даже не знаю где ещё копать.

Vander 14.06.2017 14:33

Цитата:


Vertigo сказал(а):

1.Владельца скрипта и пользователь ,от которого он запущен.


[root@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]# ls -l
total 4
-rwxrwxrwx 1 zabbix zabbix 700 Jun 13 16:24 zabbix_notify.sh

Цитата:


Vertigo сказал(а):

Пробовать запустить скрипт от этого пользователя.


[zabbix@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]$ ./zabbix_notify.sh "252352354" dfdfd dfdfd
[zabbix@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]$
Все ОК.

Цитата:


Vertigo сказал(а):

Ввести токен в поле "Отправить .." и добавить этот способ оповещения в меню "настройки-действия"


Тоже не помогло))

### Option: DBSocket
# Path to MySQL socket.
#
# Mandatory: no
# Default:
DBSocket=/tmp/mysql.sock

Тоже без результата)
[doublepost=1497436397,1497425960][/doublepost]

Цитата:


Vander сказал(а):

[root@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]# ls -l
total 4
-rwxrwxrwx 1 zabbix zabbix 700 Jun 13 16:24 zabbix_notify.sh

[zabbix@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]$ ./zabbix_notify.sh "252352354" dfdfd dfdfd
[zabbix@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]$
Все ОК.

Тоже не помогло))

### Option: DBSocket
# Path to MySQL socket.
#
# Mandatory: no
# Default:
DBSocket=/tmp/mysql.sock

Тоже без результата)


Итак, после множества тщетных попыток, стала ясна одна вещь - 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 OKing state Trigger: Ping state
[zabbix@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]$

Соответственно, буду копать в этом направлении. Может, кто сталкивался с таким?


Время: 13:32