среда, 29 марта 2017 г.

Уведомления из Zabbix в Telegram

1. Создаем бота.
Идем к @BotFather
/start
/newbot
Получаем токен вида:
311825528:AAE3r8V7iaIiXzJY_s0-9brG6JMWbT126qB
Добавляем бота в список контактов в телеграме.

2. Узнаем свой TelegramID.
Идем к @MyTelegramID_bot
/start
Получаем ID вида:
281724313

3. Проверяем, работают ли оповещения от бота:
$ curl --header 'Content-Type: application/json' -X POST \
--data '{"chat_id":"281724313","text":"your_message"}' "https://api.telegram.org/bot311825528:AAE3r8V7iaIiXzJY_s0-9brG6JMWbT126qB/sendMessage"

В Telegram должно прийти сообщение "your message".

4. Идем в Zabbix-сервер и создаем скрипт в каталоге со скриптами.
# grep ^AlertScriptsPath /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts

# vim /usr/lib/zabbix/alertscripts/zabbix-to-telegram-notify.sh
#!/bin/bash
TOKEN='311825528:AAE3r8V7iaIiXzJY_s0-9brG6JMWbT126qB'
which curl &>/dev/null
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

# chmod +x /usr/lib/zabbix/alertscripts/zabbix-to-telegram-notify.sh

5. Идем в панель Zabbix и настраиваем оповещения.
Администрирование - Способы оповещений - Создать способ оповещения

Администрирование - Пользователи - Username - Оповещения - Добавить

Настройка - Действия, Источник событий: Триггеры - Создать действие



После этого все должно приходить в Telegram.
via.

7 комментариев:

  1. Почему может не приходить уведомление в Telegram.

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

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

    Заббикз пишет, что все отправлено

    ОтветитьУдалить
  2. А если руками запустить, работает?
    /usr/local/etc/zabbix32/zabbix/alertscripts/zabbix_notify.sh ваш_chat_id subj message

    ОтветитьУдалить
  3. в логах Zabbix пишет что файл скрипт_отправки.sh not found
    п.с. решение пока сам не нашел.

    ОтветитьУдалить
  4. Проверьте AlertScriptPath:
    # grep ^AlertScriptsPath /etc/zabbix/zabbix_server.conf
    AlertScriptsPath=/usr/lib/zabbix/alertscripts

    ОтветитьУдалить
  5. уточнение.. ОС - BSD, он в другой папке лежит
    а в файлике прописано AlertScriptsPath=/home/zabbix/alertscripts

    ОтветитьУдалить
  6. Вот значит в каталоге /home/zabbix/alertscripts и создавайте скрипт отправки.

    ОтветитьУдалить
  7. файл лежит в /home/zabbix/alertscripts и в /usr/home/zabbix/alertscripts
    zabbix говорит отправлено.
    при выполнении команд на права
    $ cd /home/zabbix/alertscripts/
    $ ls -lo
    -rwsr-xr-x 1 root zabbix - 588 Feb 14 18:06 zabbix-to-telegram.sh

    ОтветитьУдалить