Нотификации 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
Токен в заметке изменен, не пытайтесь использовать его. 🙂
спасибо, работает
но бот не работает если интернет предоставляется через прокси сервер
подскажите как быть? можно ли добавить в скрипт, чтобы он работал через прокси
а если заббиксу разрешить ходить через прокси, ну или в обход прокси? 🙂
А кто-то разве что то писал про прокси? Если у вас неполноценный интернет, это ваша частная проблема. А вообще, можете посмотреть методы класса telegram/bot, хотя не думаю что там есть поддержка прокси , или искать на предмет «как прикрутить прокси к ruby-скриптам»