Настройка уведомлений в Zabbix 5.0 через канал Telegram!
Данный опус является частью единого цикла заметок o CLI. Для его написания использовалось множество различных источников (скилы крутых специалистов, статьи с тематических сайтов, техническая документация, комментарии с форумов и социальных сетей и т. д и т. п.). К сожалению, указать все источники точно не представляется возможным! По этому, в конце заметки, будет указана ссылка только на основной источник. Материалы, использованные для написания заметки, изменялись автором под конкретную задачу! Вам, скорее всего, тоже придется поступить аналогичным образом для получения желаемого результата)
Классическим способом доставки уведомлений от системы мониторинга является электронная почта. Но одного способа, как правило бывает не достаточно и не всегда удобно пользоваться почтой.
По этому рекомендуется доставлять очень важные и чрезвычайной важности сообщения, используя дополнительные каналы.
Одним из таких каналов является телеграмм (он тоже далеко не идеально работает, по этому рекомендуется использовать и другие способы информирования)
Настройка этого канала начинается с создания БОТА в телеграмме:
Преходите по ссылке для создания бота с помощью BotFather
Выбираете опцию создать нового бота, даете ему имя и в ответ BotFather пришлет Вам конфигурацию бота и его ID.
Дальше сценарии могут отличаться, в зависимости от того на какую систему мониторинга установлен Ваш Zabbix.
В этом примере используется ОС Centoc 7:
hostnamectl
Вывод команды:
Icon name: computer-vm
Chassis: vm
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.11.1.el7.x86_64
Architecture: x86-64
Переходим в папку со скриптами zabbix:
cd /usr/lib/zabbix/alertscripts
Качаем скрипт для телеги :
wget https://github.com/vasyakrg/zabbix-alert-scripts/blob/master/telegram.sh
В нем необходимо изменить следующие строки на свои:
#!/bin/bash
token='IIIIIIIIIIIIIIIIIIIIIIIIIIIIDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
chat="$1"
subj="$2"
message="$3"
/usr/bin/curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage"
Проверить работу скрипта можно командой :
sh telegram.sh "IDPOLUSHATELYA" "Тестовое сообщение" "от zabbix_bot"
Свой идентификатор в системе телеграмм можно узнать например с помощью бота userinfobot.
Мы создали бота для оповещений и получили для него token, который нам понадобится далее. Теперь нужно добавить в свой список контактов созданного бота. Для этого найдите его по имени. В моем случае имя @serveradminru_bot.
Теперь проверим, как работает отправка уведомлений через нашего бота. Для этого в консоли сервера набираем примерно такую команду:
# curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"210806260","text":"Проверяю отправку оповещений ботом"}' "https://api.telegram.org/bot1393668911:AAHDfgghTHgfhdfyX28R-wxKfvH1WR6-vdNw/sendMessage"
Бот пришлет оповещение.
В моем запросе изменяемые данные следующие:
210806260 | id моего аккаунта. Чтобы его узнать, добавьте бота @my_id_bot и напишите ему /start |
Проверяю работу бота | Текст сообщения |
bot1393668911:AAHDfgghTHgfhdfyX28R-wxKfvH1WR6-vdNw | Слово bot и дальше token бота. Пишется все в одно слово. |
Если все в порядке, двигаемся дальше. Это самая простая часть, тут не должно быть затруднений.
Отправка уведомлений в telegram через webhook
Начиная с 5-й версии, в Zabbix из коробки работают уведомления в telegram через механизм webhook. Чтобы настроить его, переходите в Администрирование -> Способы оповещений и выбирайте там Telegram.
Внутри увидите некоторые параметры. Можно так же посмотреть текст скрипта, который используется для отправки оповещений. В целом, тут сейчас не обязательно что-то менять. Дефолтные настройки полностью рабочие. Надо только указать токен бота.
Тут же можете шаблоны поправить так, как вам нравится. Это нововведение 5-й версии Zabbix - правка шаблонов оповещений в настройках самих оповещений. Это позволяет создавать для каждого типа свои шаблоны. Очень удобно.
Давайте теперь проверим отправку уведомлений через этот способ. Нажимайте Тест.
Я указал текст сообщения, заголовок, свой id и token бота. В итоге мне в личку пришло сообщение от бота.
Если хотите отправить оповещение в группу, то сначала создайте ее, а потом добавьте туда бота. Не потеряйте минус в id группы. Его тоже нужно указывать. Я сначала не понял этого и копировал id группы без минуса. В итоге, оповещения в группу не отправлялись.
Итак, убедились, что сообщения в telegram нормально отправляются. С технической стороны проблем нет. Теперь настроим отправку уведомлений по событиям. Я обычно для этого использую тестовый триггер. В стандартном шаблоне zabbix для OS Linux есть элемент данных Number of logged in users, который считает количество залогиненных пользователей. Я для него делаю триггер, чтобы он срабатывал, когда пользователей 2 и более. И с его помощью тестирую уведомления, просто подключаясь на сервер по ssh двумя подключениями одновременно.
Теперь идем в настройки пользователя и добавляем ему способ оповещений через telegram.
Если у вас ранее не работали никакие уведомления, то не забудьте активировать Действия.
У нас все настроено для отправки оповещений в telegram. Добейтесь срабатывания триггера и проверяйте телеграм канал, в который настроили отправку сообщений.
Все работает. Если вам достаточно такого функционала, то можно оставлять и пользоваться.
Проверить работу бота можно через консоль командой(Все что выделено красным нужно менять на свое):
curl --header 'Content-Type: application/json' --request 'POST' --data '{"chat_id":"1235782382","text":"Проверяю отправку оповещений ботом"}' "https://api.telegram.org/bot3478758834:rvaeuualrbUYGYGUGYUGGyuGUGUY/sendMessage"
Заметка распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Источник: