Zabbix telegram оповещение — Настройка оповещений zabbix в telegram
Я чаще всего использую стандартные уведомления от zabbix на почтовый ящик, это позволяет спокойно спать. Тем не менее, решил пойти в ногу со временем и попробовать настроить отправку оповещений из zabbix в популярный мессенджер telegram. К тому же я постоянно активно пользуюсь этим мессенджером и считаю его очень удобным.
Содержание:
Введение
- Отправка только текстовых оповещений
- Отправка графиков
- Использовать готового бота
- Создать своего бота для уведомлений
- Отправлять оповещения себе лично или в группу
Я буду настраивать все в zabbix 3.4, установленный на Centos 7. Принципиального значения это не имеет, решение будет одинаково работать практически на всех дистрибутивах linux.
- Установка CentOS 7.
- Настройка CentOS 7.
- Установка и настройка zabbix сервера.
- Установка Debian 9.
- Базовая настройка Debian 9.
- Установка и настройка zabbix на debian.
Создание бота в telegram
Теперь проверим, как работает отправка уведомлений через нашего бота. Для этого в консоли сервера набираем примерно такую команду:
Бот пришлет оповещение.
В моем запросе изменяемые данные следующие:
Скрипт для отправки оповещений
Сохраняем файл и делаем исполняемым.
Проверим отправку сообщений с помощью нашего скрипта. Для этого запустим его и передадим 3 параметра:
Вы должны получить сообщения в телеграме. Если этого не происходит, разберитесь с ошибками, прежде чем двигаться дальше.
Идем в web интерфейс zabbix и добавляем новый способ оповещений. Для этого переходим в раздел Администрирование -> Способы оповещений и создаем новый.
Заполняем необходимые поля.
В данном случае {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE} этот как раз наши параметры, которые мы будем передавать скрипту.
Я покажу как это сделать на отдельном примере. Я оставил в дефолтном правиле уведомления только по email. В телеграм я буду получать сообщения только о срабатывании одного триггера. В данном случае это будет упоминаемый раньше тестовый триггер, срабатывающий на кол-во подключенных ssh пользователей. Вы можете выбрать абсолютно любой триггер из имеющихся в наличии.
Рассмотрим ситуацию, когда мы хотим отправлять уведомления из zabbix не конкретным людям, а сразу в группу, где будут несколько пользователей. Никаких особых настроек для этого не надо. Просто создайте группу в Телеграме, добавьте в эту группу бота @my_id_bot и напишите /start. Так вы узнаете ID группы. В эту же группу добавьте своего бота.
- Создал 2 способа оповещения: Telegram private и Telegram group.
- Добавил оба этих способа пользователю администратор, указав соответствующие ID.
- Добавил оба эти способа в Действия.
После этого оповещения стали приходит как в приват, так и в общую группу. Можно настраивать разные сообщения на разные события и отправлять их по разным каналам. Это все настраивается под конкретные обстоятельства.
Выше я рассказал, как вручную самостоятельно настроить отправку простых текстовых оповещений. В интернете мне попался скрипт на питоне, который умеет все это делать, плюс прикреплять к сообщениям графики. Сейчас я вам расскажу, как это все настроить. Если вам графики не нужны, то настраивать только оповещения все же проще так, как я сделал выше. Получается и понятнее, и быстрее, и питон не надо ставить на сервер, хотя обычно он там и так есть. По крайней мере в centos 7.
Для его работы, как я уже сказал выше, у вас должен быть установлен в системе python версии 2.6.0. Именно такая версия указана у разработчика скрипта. У меня нормально работает на 2.7.5. Так же для работы необходим pip модуль requests. Если у вас его нет, то надо сначала установить pip:
а потом и сам модуль:
Копируем в директорию /usr/lib/zabbix/alertscripts файлы zbxtg.py и zbxtg_settings.example.py из скачанного с github проекта. Последний переименовываем в zbxtg_settings.py. Приводим содержимое zbxtg_settings.py примерно к такому виду.
Жирным я выделил те параметры, что нужно поменять. Вам необходимо указать token от бота, который мы ранее создавали, полный url адреса сервера с zabbix, учетную запись к нему. Лучше всего сделать отдельную учетку с доступом только на чтение. Она нужна для получения графиков. Так же вам нужно будет указать telegram id и логин. Они нам не понадобятся, так как мы не будем использовать локальную слежбу телеграма, но если поля оставить пустыми, то скрипт ругается на ошибку в конфиге. Поэтому заполняем своими данными. И в конце нужно будет указать параметры доступа к базе данных заббикса.
В личку телеграма должно прийти тестовое сообщение, а в консоли появиться примерно такой вывод.
То же самое проделаем с группой.
Если все в порядке, двигаемся дальше. Если будут ошибки, сразу разбирайтесь, в чем может быть проблема.
Теперь создаем новое действие. которое будет использовать созданные только что способы оповещения. Вот мой пример такого действия с использованием графиков и иконок emoji в сообщениях.
- {{WARNING}} — макрос для выставления иконки с восклицательным знаком
- zbxtg;graphs — указывает, что будем отправлять график
- zbxtg;itemid:{ITEM.ID1} — параметр автоматически определяет itemid для графика на основании информации об итеме в триггере, можно указать нужный itemid вручную
- zbxtg;title — задает имя для заголовка графика
Для операции восстановления я нарисовал примерно такой шаблон.
И для подтверждения.
Сохраняем действие, активируем и проверяем. При срабатывании тестового триггера я получаю следующие оповещения с графиком в telegram.
Получилось красиво и наглядно. Если нажать на картинку, то она откроется в большом размере.
Если у вас возникают ошибки с отправкой графиков, то проверить их работу можно в консоли. Вот пример запроса.
Это нормальный вывод ошибки, которая указывает на то, что выбран itemid 23301, которого либо не существует, либо к нему нет доступа, либо для него нет графика. Если выбрать правильный itemid, то после выполнения скрипта никакого вывода не будет, а в телеграм будет отправлен выбранный график.
Можете теперь настраивать по своему усмотрению графики, триггеры, события с отправкой оповещений и графиков в telegram.