Zabbix. Уведомление об алертах через Telegram.

Научим zabbix отправлять уведомления через мессенджер Telegram. За основу возьмем «Telegram messenger CLI» https://github.com/vysheng/tg

Итак приступим.

Устанавливаем пакеты необходимые для сборки Telegram клиента

apt-get install libreadline-dev libconfig-dev libssl-dev \
lua5.2 liblua5.2-dev libevent-dev libjansson-dev make

Клонируем «Telegram messenger CLI» с github

git clone --recursive https://github.com/vysheng/tg.git && cd tg

Конфигурируем и собираем

./configure
make

После сборки настраиваем пользователя в Telegram

bin/telegram-cli -k tg-server.pub -W
 
change_user_group: can`t find the user telegramd to switch to
Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license`.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show_license` for details.
Telegram-cli uses libtgl version 2.1.0
Telegram-cli includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit. (http://www.openssl.org/)
I: config dir=[/root/.telegram-cli]
[/root/.telegram-cli] created
[/root/.telegram-cli/downloads] created
phone number: +79919999991
register (Y/n): Y
first name: First
last name: Last
code ('CALL' for phone code): 56934
>

Вводим данные для регистрации нового пользователя, подтверждаем это кодом пришедшим по sms на указаный телефон.

Для вывода подсказок по командам нужно ввести команду help

> help

Далее добавляем контакт согласно шаблону

add_contact   
 
> add_contact +79913030394 Test User

Теперь можно отправить пользователю сообщение

> msg Test_User "Hello!!!"

Если все было настроено верно сообщение должно прийти.

Если планируется отправка сообщений не одному пользователю, то можно создать групповой чат:

> create_group_chat  +

На этом настройка клиента завершена, можно выйти

> quit

Теперь у пользователя под которым мы работали в домашней директории была создана папка .telegram-cli с настройками telegram, необходимо перенести её в домашнюю папку пользователя zabbix(у меня она /var/lib/zabbix), туда же переносим склонированный проект — папку tg, после этого меняем на нее права

chown -R zabbix:zabbix /var/lib/zabbix

Далее создаем скрипт для оповещения об алертах

В zabbix_server.conf есть параметр AlertScriptsPath который указывает расположение скриптов уведомления, в моем случае это

AlertScriptsPath=/usr/lib/zabbix/alertscripts

создаем там скрипт tg.sh

#!/bin/bash
to=$1
msg="$2"
tgpath=/var/lib/zabbix/tg
cd ${tgpath}
(sleep 1; echo "msg $to $msg"; echo "safe_quit") | ${tgpath}/bin/telegram-cli -k tg-server.pub -W

sleep 1 нужен для того чтоб telegram клиент успел загрузится, если этого не происходит, то нужно увеличить значение.

и меняем его владельца и права

chown zabbix:zabbix tg.sh
chmod u+x tg.sh

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

Переходим на веб-морду.

АдминистрированиеСпособы оповещенийСоздать способ оповещения

Имя: telegram
Тип: Скрипт
Имя скрипта: tg.sh
Параметры скрипта

{ALERT.SENDTO}

{ALERT.SUBJECT}

tg_sh

Далее переходим в свой профильОповещенияДобавить

Тип: telegram
Отправлять на: Пользователь или Группа имеющиеся у нашего сервера в контактах

op_zab

Сохраняем — Обновляем — И ждем уведомлений!!!

2 Comments

  1. Роман

    Все сделал по инструкции…
    отправляются сообщения через cli
    отправляются сриптом — ./tg.sh Дима_Андронов tetst

    Но не отправляются самим заббиксом
    Хотя в заббиксе вижу в событиях что все ок
    http://joxi.ru/vAWvR40tdzYx2W
    (скриншот)

    1. admin

      Можно проверить следующее:
      Владелец скрипта — пользователь от которого запущен Zabbix? Можно проверить запустив от этого пользователя скрипт.
      Если сообщение отправляется, в таком случае проверить директиву AlertScriptsPath в конфигурационном файле.
      Ну и наконец посмотреть логи Zabbix server на предмет ошибок.

Comments are closed.