Настройка оповещений zabbix в telegram
Zabbix Notification Telegram
- Обработка быстрых команд ботом
- Отправка метрик по запросу от бота
Для работы потребуется Python 3+ и Zabbix 3+.
Установка из source (git requires)*:
После этого нотификатор практически готов к работе, потребуется еще несколько шагов.
Подробную инструкцию вы можете найти на wiki: RU, ENG (vacant)
Создаем первое оповещение
Получаем API token
Если у Вас нет бота, я расскажу как это сделать: RU, ENG (vacant)
Основная конфигурация нотификатора производится через файл zbxTelegram_config.py.
Давайте разберем каждый параметр подробно:
Дополнительная конфигурация производится через XML разметку(пример) в Zabbix Action.
Также разберем эти параметры:
<![CDATA[]]> : В XML документах фрагмент, помещенный внутрь CDATA, — это часть содержания элемента, которая помечена для парсера как содержащая только символьные данные, а не разметку. CDATA — это просто альтернативный синтаксис для отображения символьных данных, нет никакой смысловой разницы между символьными данными, которые объявлены как CDATA и символьными данными, которые объявлены в обычном синтаксисе и где «<» и «>» будут представлены как «<» и «>», соответственно. (Wikipedia)
Более детальную настройку нотификатора можно произвести через тэги в триггерах.
Разберем эти параметры:
Все основные события (отправка, добавления в cash файл, изменение группы в суппергруппу, ошибки, дебаг) логируются в файле znt.log , Вы можете его найти по умолчанию /usr/lib/zabbix/alertscripts/zbxTelegram_files/znt.log (config_log_file]) Поддерживаются три режима логирования:
- Обычный(по-умолчанию), ведется минимальный log об операциях в нотификаторе; ], более детальный log, требуется только для анализа ошибок в работе нотификатора (по-умолчанию False); ], полный Traceback ошибок (по-умолчанию False);
Оповещение не приходит в группу или в личку
Последние значимые изменения
- Добавлены и изменены переменные в конфиг файле.
- Изменен XML.
Отправка уведомлений из Zabbix в Telegram через Webhook
Исходные данные: Zabbix 4.4
Задача: Сделать отправку уведомлений из Zabbix в Telegram через Webhook
1. Создаем бота у тут
2. Теперь нам нужно узнать собственный идентификатор, чтобы указать его в настройках профиля пользователя в Zabbix
Настройки метода оповещения
Zabbix telegram via webhook test
4. Настройка способа оповещения у пользователя
Теперь перейдите в настройки пользователя который должен получать оповещения, добавьте новое оповещение.
zabbix telegram via webhook user profile
5. Настройка действий
6. Отладка скрипта отправки и логгирование.
Скрипт отправки написан на JavaScript и ведет полное логгирование действий по отправке на уровне 3 (warning), если Вы откроете стандартный лог-файл Zabbix-server по пути /var/log/zabbix/zabbix_server.log, то увидите примерно такое:
Код ответа 200 означает успешную отправку.
Могут быть и ошибки отправки, пример (указан неправильный ID чата):
или указан неправильный токен:
На этом все, до скорых встреч.
Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Telegram is a cloud-based instant messaging and voice over IP service. Telegram client apps are available for Android, iOS, Windows Phone, Windows NT, macOS and GNU/Linux. Users can send messages and exchange photos, videos, stickers, audio and files of any type.
Available solutions
Also available for: 5.0
This guide describes how to send notifications from Zabbix 5.0 to the Telegram messenger using Telegram Bot API and Zabbix webhook feature.
Supported features:
- Personal and group notifications
- Markdown/HTML support
Not implemented:
- Graphs sending - waiting for ZBXNEXT-5611
- Emoji support
Telegram setup
1. Register a new Telegram Bot: send "/newbot" to @BotFather and follow the instructions. The token provided by @BotFather in the final step will be needed for configuring Zabbix webhook.
2. If you want to send personal notifications, you need to obtain chat ID of the user the bot should send messages to.
Send "/getid" to "@myidbot" in Telegram messenger.
Ask the user to send "/start" to the bot, created in step 1. If you skip this step, Telegram bot won't be able to send messages to the user.
3.If you want to send group notifications, you need to obtain group ID of the group the bot should send messages to. To do so:
Zabbix setup
1. In the "Administration > Media types" section, import the media_telegram.yaml. 2. Configure the added media type: Copy and paste your Telegram bot token into the "telegramToken" field.
In the ParseMode parameter set required option according to the Telegram's documentation. Read the Telegram Bot API documentation to learn how to format action notification messages: Markdown / HTML / MarkdownV2. Note: in this case, your Telegram-related actions should be separated from other notification actions (for example, SMS), otherwise you may get plain text alert with raw Markdown/HTML tags.
Test the media type using chat ID or group ID you've got.
If you have forgotten to send '/start' to the bot from Telegram, you will get the following error:
3.To receive notifications in Telegram, you need to create a Zabbix user and add Media with the Telegram type. In the "Send to" field enter Telegram user chat ID or group ID obtained during Telegram setup.
Make sure the user has access to all hosts for which you would like to receive Telegram notifications.
Great, you can now start receivng Zabbix notifications in Telegram!
Also available for: 5.4
This guide describes how to send notifications from Zabbix 5.0 to the Telegram messenger using Telegram Bot API and Zabbix webhook feature.
Supported features:
- Personal and group notifications
- Markdown/HTML support
Not implemented:
- Graphs sending - waiting for ZBXNEXT-5611
- Emoji support
Telegram setup
1. Register a new Telegram Bot: send "/newbot" to @BotFather and follow the instructions. The token provided by @BotFather in the final step will be needed for configuring Zabbix webhook.
2. If you want to send personal notifications, you need to obtain chat ID of the user the bot should send messages to.
Send "/getid" to "@myidbot" in Telegram messenger.
Ask the user to send "/start" to the bot, created in step 1. If you skip this step, Telegram bot won't be able to send messages to the user.
3.If you want to send group notifications, you need to obtain group ID of the group the bot should send messages to. To do so:
Zabbix setup
1. In the "Administration > Media types" section, import the media_telegram.xml. 2. Configure the added media type: Copy and paste your Telegram bot token into the "telegramToken" field.
In the ParseMode parameter set required option according to the Telegram's documentation. Read the Telegram Bot API documentation to learn how to format action notification messages: Markdown / HTML / MarkdownV2. Note: in this case, your Telegram-related actions should be separated from other notification actions (for example, SMS), otherwise you may get plain text alert with raw Markdown/HTML tags.
Test the media type using chat ID or group ID you've got.
If you have forgotten to send '/start' to the bot from Telegram, you will get the following error:
3.To receive notifications in Telegram, you need to create a Zabbix user and add Media with the Telegram type. In the "Send to" field enter Telegram user chat ID or group ID obtained during Telegram setup.
Make sure the user has access to all hosts for which you would like to receive Telegram notifications.
Кажется, что в последнее время электронная почта больше подходит для спама, чем для оперативных оповещений системы мониторинга. В этой статье я соберу методы получения уведомлений на мобильные устройства ― как через мессенджеры, так и через традиционные каналы связи.
Рассматривать решения я буду на примере Zabbix, но их можно адаптировать и под вашу любимую систему, лишь бы она умела запускать скрипты по триггеру.
Получать уведомления в такой корпоративный мессенджер как Slack действительно удобно, а благодаря открытому API ― еще и просто. С API можно познакомиться в официальной документации, я же покажу пару примеров реализации.
Получаем URL для отправки запросов.
Теперь нужно добавить в Zabbix скрипт ― по умолчанию это папка /usr/local/share/zabbix/alertscripts, ― разрешить его выполнение и настроить в нем необходимые параметры. Со скриптом и подробными инструкциями по настройке можно ознакомиться на GitHub в репозитории zabbix-slack-alertscript.
Уведомления в Slack.
Более интересным и сложным способом решения задачи будет создание полноценного бота. В отличие от простого варианта с curl, бот может не только кидать уведомления, но и удалять их при решении проблемы.
Ознакомиться с исходным кодом бота и подробной инструкцией по настройке можно в репозитории zabbix-notify на GitHub. Помимо Slack, этот бот поддерживает уведомления в HipChat, создание новых инцидентов и разрешение старых в системе управления инцидентами PagerDuty.
Получать уведомления в этот популярный, но заблокированный на территории РФ, мессенджер тоже удобно, благо открытый API это позволяет. Ознакомиться с возможностями автоматизации можно в документации на официальном сайте.
Для самого простого решения нужно получить свой токен для запросов при помощи «Отца Ботов» ― @BotFather. При помощи команд /start и /newbot главный бот выдаст заветный токен.
Получаем токен для нашего бота-уведомлятора.
С подробной инструкцией к простому и чуть более сложному скрипту можно ознакомиться в материале «Отправка уведомлений и графиков из Zabbix в Telegram».
Этот мессенджер, к сожалению, не имеет документированного публичного API и борется со скриптами на GitHub в рамках «борьбы со спамом». Но выход есть. Можно использовать штатное решение «прямая связь», описанное в официальном FAQ. Но тогда понадобится держать инстанс WhatsApp Web. Аналогично сработает обвязка автокликером веб-версии или десктопного приложения.
Чуть более интересным вариантом будет использование консольного «мессенджера» yowsup. Сам мессенджер доступен в одноименном репозитории GitHub. Пока решение работает. Но если WhatsApp вдруг решит поменять свой API, то для адаптации понадобится время.
Подробнее с настройкой консольного скрипта и Zabbix можно ознакомиться в статье «Получаем уведомления от Zabbix в WhatsApp».
Сначала нам понадобится создать свое приложение в соцсети ― для получения токена. Сделать это можно в разделе «Мои приложения». После создания нового приложения нам нужно скопировать его ID в разделе «Настройки» и перейти по ссылке:
После подтверждения доступа в адресной строке появится подобный адрес:
Где в значении параметра access_token будет необходимый нам токен.
С пошаговой настройкой уведомлений и вариантом реализации скрипта можно ознакомиться в статье «Прикручиваем к Zabbix оповещения в VKontakte».
Если некоторое ретроградство вам не чуждо, то еще остался Jabber. Получать уведомления в старый любимый мессенджер Zabbix позволяет «из коробки». Для этого достаточно настроить аккаунт в свойствах оповещений:
Настройка аккаунта Jabber.
Если не зацикливаться на модных и не очень мессенджерах, то можно получать уведомления и просто через технологию push. Она поддерживается не только в мобильных устройствах, но и в любой Windows 10, а также в браузерах Chrome и Firefox.
Push уведомления на Android.
С примером конкретных реализаций можно ознакомиться:
- в материале «Zabbix + Pushbullet: простой способ push-оповещения»;
- в разделе Zabbix документации Pushsafer;
- в репозитории zabbix-alertscripts на GitHub.
Уведомления в мессенджеры на телефоны ― это, конечно, хорошо. Но только до тех пор пока у сервера Zabbix есть выход в интернет. Для гарантированного получения уведомлений при сбоях в сети лучше использовать традиционные каналы связи.
Zabbix «из коробки» поддерживает возможность отправлять SMS. К сожалению, он умеет это делать только через последовательный интерфейс. Если у вас завалялся Siemens MC35 или что-то подобное, то с настройками отправки СМС можно ознакомиться в документации Zabbix в разделе SMS.
Настройка скрипта для уведомлений по СМС.
С примером настройки Zabbix можно ознакомиться в статье «Бесплатная отправка SMS-уведомлений в Zabbix».
Отправка СМС через внешний шлюз не решит проблему отсутствия интернета на сервере в отличие от отправки через аппаратные устройства с симкой. В качестве бюджетного варианта можно использовать USB-модем ― например, Huawei e1550.
СМС можно пропустить запросто, а вот телефонный звонок ― уже сложнее. Поэтому для особо срочных уведомлений можно настроить Zabbix на телефонные звонки. Выходов, как обычно, несколько.
Пример реализации детально описан в статье «Оповещения из Zabbix телефонным звонком».
Альтернативным вариантом станет использование своей АТС на базе Asterisk и обращение к ней с помощью специальных call-файлов или по интерфейсу AMI. Тогда, при наличии независимого от интернета канала связи вроде аналоговой линии или потока Е1, можно будет выслушать проблемы вашего сервера.
В статье я постарался привести ссылки на основные решения для уведомлений инженеров о проблемах. Главное, при проектировании системы мониторинга учесть возможность отсутствия интернета и не забыть про дублирующую систему, ответив себе на извечный вопрос «Quis custodiet ipsos custodes? ». И, конечно же, не нужно превращать сервер мониторинга в спамера, иначе уведомления станут бессмысленны.
Если вы используете какой-то другой способ оповещения ― мы ждем его в комментариях.
Настраиваем уведомления из Zabbix 5 в Telegram. В разделе Administration → Media types (Администрация → Типы оповещений) уже есть куча предустановленных вебхуков, в том числе и Telegram, осталось его только настроить.
Создание бота в Telegram
Выводится справка по командам. Для создания бота пишем:
Нам предлагают указать для бота name (имя), я пишу:
Нам предлагают указать для бота username (логин), он должен оканчиваться на "bot" или "Bot" я пишу:
Бот создан, получаем токен "Use this token to access the HTTP API". Копируем его и вставляем в Zabbix в разделе Administration → Media types → Telegram → Parameters → Token.
Сохраняем изменения. Кстати, в описании также приводится краткая инструкция по настройке Telegram:
Отправка уведомления в Telegram пользователю
На самом деле таких ботов, которые возвращают идентификаторы довольно много.
Sending failed: Bad Request: chat not found.
Проверяю ещё раз.
Отправка уведомления в Telegram группе
ПРИМЕЧАНИЕ: если вы сделаете группу "супергруппой", то у неё сменится идентификатор.
Создаю группу, добавляю в неё бота.
Для получения group id в Telegram добавляю бота @myidbot в группу и отправляю команду:
Получаем идентификатор группы, заметьте, что он отрицательный, не теряем минус.
Читайте также: