Нотификации Zabbix в Telegram

В этой заметке я расскажу как настроить получение уведомлений от Zabbix в Telegram, таким образом, имея установленный клиент на телефоне, Вы сможете получать уведомления в реальном времени. Реализация будет на ruby, буквально в 5 строк. Как установить ruby найти проблем не составит. будем использовать готовый gem.
Итак, приступим. Подразумевается что ruby уже стоит, и нам надо установить gem для работы с API Telegram.

# gem install telegram-bot-ruby

Далее создадим бота в Telegram. Для этого нужно добавить в контакты @BotFather и пишем ему:

/newbot

На изображениях виден весь диалог:

В результате Вы получите токен вида: 12345678:AA3edr5no-KDcr5jj-ZRtvSe-Xgbrz6TpFs
Его необходимо сохранить, и не светить.

Далее, добавляем в контакты своего бота по username(последний пункт при создании бота).
С Telegram закончили. Можете добавить описание и картинку для своего бота, подробнее как это сделать можете глянуть, написав /help контакту @BotFather.

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

В настройках zabbix-сервера(/etc/zabbix/zabbix_server.conf) ищем переменную AlertScriptsPath. У меня это /usr/lib/zabbix/alertscripts
В этой папке создаем скрипт с именем send_msg_telegram.rb следующего содержания (не забудьте поставить свой токен):

#!/usr/bin/env ruby
require 'telegram/bot'
token = '12345678:AA3edr5no-KDcr5jj-ZRtvSe-Xgbrz6TpFs'
v1 = ARGV[0]
v2 = ARGV[1]
v3 = ARGV[2]
Telegram::Bot::Client.run(token) do |bot|
bot.api.sendMessage(chat_id: "#{v1}", text: "#{v2} >>>\n\n#{v3}")
end

Да простят меня программеры, ибо я ни разу не ruby-ист.
Устанавливаем права на выполнение данного скрипта:

# chmod a+x /usr/lib/zabbix/alertscripts/send_msg_telegram.rb

И переходим к настройке Zabbix-а:
В Administration->Media добавляем новый Media type:

В Administration->User выбираем своего юзера и настраиваем ему Media:

В поле Send to необходимо вставить ID Вашего с ботом чата, посмотреть его можно зайдя на:

https://api.telegram.org/bot12345678:AA3edr5no-KDcr5jj-ZRtvSe-Xgbrz6TpFs/getUpdates на предмет chat_id.

не забываем подставлять свой токен. Если там пусто, напишите что-нить своему боту, начинающееся с /

Идем дальше в Configuration->Actions и настраиваем Уведомления:

Передергиваем какой-нить сервис на сервере который мониторим, чтоб сработал Zabbix и получаем уведомления от нашего бота к себе в Telegram.

Так же можно создать группу, куда добавить необходимых людей и бота, посмотреть ID группы (начинается с минуса) и слать сообщения в группу, в это случае все подключенные к этой группе будут получать уведомления.

Вот и всё!

Удачи в настройках.
© shadow_alone

Токен в заметке изменен, не пытайтесь использовать его. 🙂

  • Рустам Иманалиев

    спасибо, работает
    но бот не работает если интернет предоставляется через прокси сервер
    подскажите как быть? можно ли добавить в скрипт, чтобы он работал через прокси

  • Valery Petrov

    а если заббиксу разрешить ходить через прокси, ну или в обход прокси? 🙂

  • andrey0001

    А кто-то разве что то писал про прокси? Если у вас неполноценный интернет, это ваша частная проблема. А вообще, можете посмотреть методы класса telegram/bot, хотя не думаю что там есть поддержка прокси , или искать на предмет «как прикрутить прокси к ruby-скриптам»