Просмотр полной версии : Zabbix. Уведомления в Telegram
Всем привет! Задался вопросом настройки 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/attachments/28956080/img_2d35c7abe1.png
https://forum.antichat.xyz/attachments/28956080/img_7f6ae584cd.png
https://forum.antichat.xyz/attachments/28956080/img_3422ab2d8c.png
https://forum.antichat.xyz/attachments/28956080/img_fba94568cb.png
Уведомления исправно приходят на email но не в телеграм.
Если запускать скрипт вручную от любого пользователя, с параметрами:
./zabbix_notify.sh "my ID" "test" "test"
Все, так же исправно.
Надеюсь кто-то подскажет, в чем может быть трабл.
Если я верно понял,то используется такая конфигурация
https://blog.amet13.name/2017/03/zabbix-telegram.html
Можно свериться и обратить внимание на строку # vim /usr/lib/zabbix/ там не прописывается local
Надеюсь,что пригодится.
Но для начала стоит попробовать в строке #!/usr/local/bin/bash написать #! /bin/bash в самом начале,т.к.
это является правилом и началом любого bash-скрипта.
Vertigo сказал(а):
Если я верно понял,то используется такая конфигурация
Верно, остальное сейчас попробую. Спасибо.
Код:
# 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/attachments/28956086/img_a1393e9777.png
Не могу понять ,почему строки нет в скрипте такой: #!/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).
Код:
# 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
Вот тут не совсем понял
Vander сказал(а):
Код:
Вот тут не совсем понял
Рекомендуют в настройке Zabbix в интерфейсе указывать реальное имя машины (хоста)
Вот ещё неплохой разбор этой темы с комментариями к решению проблем
http://blog.angel2s2.ru/2016/03/zabbix-telegram.html
[/QUOTE]
Вообще никак))
Создается впечатление, что 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\":\"${SUBJECT} \n${MESSAGE}\"}" "https://api.telegram.org/bot${TOKEN}/sendMessage" | $
Если жду алерта от Zabbix, то ничего не происходит, совсем.
Засада какая-то.Что ещё можно проверить и пробовать:
1.Владельца скрипта и пользователь ,от которого он запущен.
Пробовать запустить скрипт от этого пользователя.
2.Вместо localhost пробовать указать 127.0.0.1 ,или наоборот.
Параллельно отключить DBSocket (если такой есть)
3. Вкладка администрирование-пользователи,выбираем нужного польз-ля
Далее,перейти во вкладку "оповещение"- жмём добавить -"способ оповещения"-Telegram
Ввести токен в поле "Отправить .." и добавить этот способ оповещения в меню "настройки-действия"
В веб-интерфейсе вроде всё активировано и указано,даже не знаю где ещё копать.
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
Тоже без результата)
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]$
Соответственно, буду копать в этом направлении. Может, кто сталкивался с таким?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot