• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблема Zabbix. Уведомления в Telegram

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 351
BIT
0
Всем привет! Задался вопросом настройки 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:

upload_2017-6-10_15-7-24.png


upload_2017-6-10_15-7-43.png


upload_2017-6-10_15-7-58.png

upload_2017-6-10_15-8-49.png


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

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 999
BIT
1
Если я верно понял,то используется такая конфигурация

Можно свериться и обратить внимание на строку # vim /usr/lib/zabbix/ там не прописывается local
Надеюсь,что пригодится.
[doublepost=1497100849,1497099885][/doublepost]Но для начала стоит попробовать в строке #!/usr/local/bin/bash написать #! /bin/bash в самом начале,т.к.
это является правилом и началом любого bash-скрипта.
 

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 351
BIT
0
Если я верно понял,то используется такая конфигурация
Верно, остальное сейчас попробую. Спасибо.
[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

Привел, скрипт к такому виду, по прежнему не сработало, хотя в журнале
upload_2017-6-10_17-23-33.png
 

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 999
BIT
1
Не могу понять ,почему строки нет в скрипте такой: #!/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}\"}"
" {TOKEN}/sendMessage" | grep -q '"ok":false,'
3.) Команда на исполняемость скрипта : chmod +x /usr/local/zabbix32/zabbix/alertscripts/telegram.sh

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

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 351
BIT
0
Код:
# 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

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 318
3 999
BIT
1
Код:
Вот тут не совсем понял[/quote]
Рекомендуют в настройке Zabbix в интерфейсе указывать реальное имя машины (хоста)
Вот ещё неплохой разбор этой темы с комментариями к решению проблем
http://blog.angel2s2.ru/2016/03/zabbix-telegram.html
 
  • Нравится
Реакции: Vander

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 351
BIT
0
Вообще никак))

Создается впечатление, что 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}\"}" " {TOKEN}/sendMessage" | $

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

Vertigo

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

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 351
BIT
0
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

Пробовать запустить скрипт от этого пользователя.
[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

Тоже без результата)
[doublepost=1497436397,1497425960][/doublepost]
[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 OK:ping state Trigger: Ping state
[zabbix@asterisk /usr/local/etc/zabbix32/zabbix/alertscripts]$

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!