Ошибка при тестировании способа оповещения sending failed bad request chat not found

Profile picture for user Олег

Zabbix

Настраиваем уведомления из Zabbix 5 в Telegram. В разделе Administration → Media types (Администрация → Типы оповещений) уже есть куча предустановленных вебхуков, в том числе и Telegram, осталось его только настроить.

На самом деле есть несколько способов отправлять сообщения из Zabbix в Telegram, но здесь я рассмотрю только отправку с помощью вебхуков.

Нам понадобится создать бота для отправки сообщений. Бот может отправлять сообщения пользователям или в группу.

telegram

Создание бота в Telegram

Создадим бота, через которого Zabbix будет отправлять сообщения. Для управления ботами есть специальный бот @BotFather, добавляем его себе в контакты и пишем ему:

/start

telegram

Выводится справка по командам. Для создания бота пишем:

/newbot

Нам предлагают указать для бота name (имя), я пишу:

Zabbix internet-lab.ru

Нам предлагают указать для бота username (логин), он должен оканчиваться на «bot» или «Bot» я пишу:

zabbix_internet_lab_ru_bot

telegram

Бот создан, получаем токен «Use this token to access the HTTP API». Копируем его и вставляем в Zabbix в разделе Administration → Media types → Telegram → Parameters → Token.

zabbix

Сохраняем изменения. Кстати, в описании также приводится краткая инструкция по настройке Telegram:

https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/telegram

1. Register bot: send "/newbot" to @BotFather and follow instructions
2. Copy and paste the obtained token into the "Token" field above
3. If you want to send personal notifications, you need to get chat id of the user you want to send messages to:
    3.1. Send "/getid" to "@myidbot" in Telegram messenger
    3.2. Copy returned chat id and save it in the "Telegram Webhook" media for the user
    3.3. Ask the user to send "/start" to your bot (Telegram bot won't send anything to the user without it)
4. If you want to send group notifications, you need to get group id of the group you want to send messages to:
    4.1. Add "@myidbot" to your group
    4.2. Send "/getgroupid@myidbot" in your group
    4.3. Copy returned group id save it in the "Telegram Webhook" media for the user you created for  group notifications
    4.4. Send "/start@your_bot_name_here" in your group (Telegram bot won't send anything to the group without it)

Отправка уведомления в Telegram пользователю

Если вы хотите отправить личное сообщение пользователю, то в его профиле в разделе Media нужно указать chat id пользователя из Telegram.

telegram

Для получения chat id пользователю нужно в Telegram добавить бота @myidbot и отправить команду:

/getid

telegram

На самом деле таких ботов, которые возвращают идентификаторы довольно много.

telegram

Можно протестировать отправку сообщения в Telegram ссылкой «test».

telegram

Проверяю.

telegram

Ошибка.

Sending failed: Bad Request: chat not found.

Это нормально, ботам нельзя отправлять сообщения пользователям без их согласия. Нахожу созданного бота Zabbix internet-lab.ru и отправляю ему команду:

/start

telegram

Проверяю ещё раз.

telegram

Media type test successful.

Сообщение пришло.

telegram

Отправка уведомления в Telegram группе

Для отправки уведомления в группу нужно эту группу создать, добавить в неё созданного бота и отправить уведомление на id группы.

ПРИМЕЧАНИЕ: если вы сделаете группу «супергруппой», то у неё сменится идентификатор.

Создаю группу, добавляю в неё бота.

telegram

Для получения group id в Telegram добавляю бота @myidbot в группу и отправляю команду:

/getgroupid@myidbot

telegram

Получаем идентификатор группы, заметьте, что он отрицательный, не теряем минус.

Можно протестировать отправку сообщения в Telegram.

telegram

Сообщение отправлено.

telegram

Сообщения отправляются в Telegram. Теперь можно заниматься настройкой, шлифовкой, дизайном и прочими неинтересными вещами.

Содержание

  1. Отправка уведомлений из Zabbix в Telegram через Webhook
  2. Zabbix 5 — настраиваем уведомления в Telegram
  3. Создание бота в Telegram
  4. Отправка уведомления в Telegram пользователю
  5. Отправка уведомления в Telegram группе
  6. Отправка уведомлений и графиков из zabbix в telegram
  7. Введение
  8. Создание бота в telegram
  9. Отправка уведомлений в telegram через webhook
  10. Настройка zabbix на отправку графиков в telegram
  11. Разные оповещения о разных событиях
  12. Оповещения в telegram со ссылками на график и триггер
  13. Заключение

Отправка уведомлений из Zabbix в Telegram через Webhook

Не так давно вышел Zabbix 4.4 в котором появилось много всего интересного. Например, добавлена возможность использования web-хуков и собственных обработчиков действий и уведомлений при выявлении сбоев проверяемых сервисов. Обработчики можно создавать на JavaScript и применять для обращения к внешним службам доставки уведомлений или системами отслеживания ошибок. Например, можно написать обработчик для отправки сообщений о проблемах в корпоративный чат.

В данной статье я расскажу как можно из Zabbix 4.4 (а так же из 5.0) отправлять сообщения в Телеграм без использования дополнительных скриптов.

Исходные данные: Zabbix 4.4
Задача: Сделать отправку уведомлений из Zabbix в Telegram через Webhook

Для того чтобы отправлять сообщения в Телеграм необходим доступ до api.telegram.org на порт 443 с Вашего Zabbix-сервера.

1. Создаем бота у @botfather, официальная инструкция тут

Команда для создания бота /newbot
Далее вводим имя желаемого бота обязательно маленькими буквами и в конце префикс _bot, например: myxxxxxxx_bot
Если имя не занято, то botfather скажет «Done! Congratulations on your new bot» и далее выдаст ссылку на бота, вида: t.me/myxxxxxxx_bot
А так же кроме всего прочего после слов «Use this token to access the HTTP API:» выдаст API-ключ нашего бота, он нам пригодиться дальше.

Нам нужно перейти по ссылке на нашего бота и нажать ЗАПУСТИТЬ или ввести /start, если этого не сделать, то сообщения Вам приходить не будут. Данную ссылку Вы можете давать всем кто будет получать оповещения.

2. Теперь нам нужно узнать собственный идентификатор, чтобы указать его в настройках профиля пользователя в Zabbix

Самый простой способ узнать свой ID — это подключиться к боту @get_id_bot, нажать ЗАПУСТИТЬ и он выдаст вам Ваш ID. Дополнительную информацию о боте можно узнать здесь.

3. Импорт нового способа оповещения:

Открываем Zabbix, переходим в «Администрирование» -> «Способы оповещений», наживаем «Импорт» и выбираем файл zbx_export_mediatypes.xml

У нас появляется новый способ оповещения «Telegram via Webhook», редактируем его и в строку с именем token вводим Ваш API-ключ бота из п.1

Далее Вы можете изменить 3 дополнительных параметра отправки сообщений, это parse_mode, disable_web_page_preview и disable_notification

Параметр parse_mode задает режим разметки сообщений, может иметь значения HTML, Markdown или MarkdownV2, более детально о разметке сообщений можно почитать в официальной документации.

Параметр disable_web_page_preview дает возможность отключить предпросмотр ссылок в сообщениях, может иметь значения true или false. Иногда имеет смысл ставить его в false, выбирать Вам.

Параметр disable_notification дает возможность отключить уведомления о приходе сообщения, может иметь значения true или false.

Параметр HTTPProxy используется только в пропатченой версии zabbix-server v4.4, которая позволяет отправлять сообщения в Телеграм через HTTP-прокси. Не заполняйте это поле в стандартной версии zabbix v4.4! О том как пересобрать zabbix-server с поддержкой HTTPProxy для Web-хуков я описал тут
В Zabbix v5.0 реализована работа вебхуков через прокси и патч не требуется, поэтому Вы можете использовать параметр HTTPProxy и указать в нем адрес прокси-сервера.
Формат параметра HTTPProxy: schema://user:[email protected]:port
где
schema — это протокол, может быть http, https или socks5h
user и password — это логин и пароль пользователя если на прокси используется авторизация (не обязательные поля)
ip — это IP адрес или доменное имя
port — это порт прокси
Пример:
http://123.45.67.89:3128
или
socks5h://vasua:[email protected]:1080

Установленная галочка «Включить запись меню события» (Include event menu entry) позволяет добавлять в алармы на странице «Проблемы» ссылку с именем указанном в поле «Имя записи меню» (Menu entry name) при выборе которой будет открываться страница указанная в «URL записи меню» (Menu entry URL). Поле «URL записи меню» установлено в специально, это позволяет вместе с включенной опцией «Обработка тегов» формировать правильные ссылки на сообщения в чате.

Пример настройки, маркировки тегом и вид меню перехода к сообщению:

Настройки метода оповещения

Пример маркировки тегами и меню перехода к сообщению в Телеграм

Zabbix telegram via webhook test

4. Настройка способа оповещения у пользователя

Теперь перейдите в настройки пользователя который должен получать оповещения, добавьте новое оповещение.

Тип выберите «Telegram via Webhook», в поле «Отправлять на» введите ID пользователя из п.2, пример на картинке ниже:

zabbix telegram via webhook user profile

5. Настройка действий

Теперь можно настроить непосредственно действия по отправке уведомления при наступлении определенных событий, для этого перейдите в Zabbix в «Настройка» -> «Действия», выберите Источник событий — Триггеры и нажмите кнопку «Создать действие».

6. Отладка скрипта отправки и логгирование.

Скрипт отправки написан на JavaScript и ведет полное логгирование действий по отправке на уровне 3 (warning), если Вы откроете стандартный лог-файл Zabbix-server по пути /var/log/zabbix/zabbix_server.log, то увидите примерно такое:

Код ответа 200 означает успешную отправку.

Могут быть и ошибки отправки, пример (указан неправильный ID чата):

или указан неправильный токен:

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

Внимание! Отправка эмодзи с указанием unicode-кода будет работать только в Zabbix v4.4, в 5-й версии Zabbix нужно использовать непосредственно сами картинки, их можно вставлять в нужные места сообщений (смотрите скриншоты ниже).

Пример отправки сообщения с эмодзи в Zabbix v4.4:

Пример отправки сообщения с эмодзи в Zabbix v4.4

Пример отправки сообщения с эмодзи в Zabbix v5:

Пример отправки сообщения с эмодзи в Zabbix v5

На этом все, до скорых встреч.

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

Источник

Zabbix 5 — настраиваем уведомления в Telegram

Настраиваем уведомления из Zabbix 5 в Telegram. В разделе Administration → Media types (Администрация → Типы оповещений) уже есть куча предустановленных вебхуков, в том числе и Telegram, осталось его только настроить.

На самом деле есть несколько способов отправлять сообщения из Zabbix в Telegram, но здесь я рассмотрю только отправку с помощью вебхуков.

Нам понадобится создать бота для отправки сообщений. Бот может отправлять сообщения пользователям или в группу.

Создание бота в Telegram

Создадим бота, через которого Zabbix будет отправлять сообщения. Для управления ботами есть специальный бот @BotFather, добавляем его себе в контакты и пишем ему:

Выводится справка по командам. Для создания бота пишем:

Нам предлагают указать для бота name (имя), я пишу:

Нам предлагают указать для бота username (логин), он должен оканчиваться на «bot» или «Bot» я пишу:

Бот создан, получаем токен «Use this token to access the HTTP API». Копируем его и вставляем в Zabbix в разделе Administration → Media types → Telegram → Parameters → Token.

Сохраняем изменения. Кстати, в описании также приводится краткая инструкция по настройке Telegram:

Отправка уведомления в Telegram пользователю

Если вы хотите отправить личное сообщение пользователю, то в его профиле в разделе Media нужно указать chat id пользователя из Telegram.

Для получения chat id пользователю нужно в Telegram добавить бота @myidbot и отправить команду:

На самом деле таких ботов, которые возвращают идентификаторы довольно много.

Можно протестировать отправку сообщения в Telegram ссылкой «test».

Sending failed: Bad Request: chat not found.

Это нормально, ботам нельзя отправлять сообщения пользователям без их согласия. Нахожу созданного бота Zabbix internet-lab.ru и отправляю ему команду:

Проверяю ещё раз.

Отправка уведомления в Telegram группе

Для отправки уведомления в группу нужно эту группу создать, добавить в неё созданного бота и отправить уведомление на id группы.

ПРИМЕЧАНИЕ: если вы сделаете группу «супергруппой», то у неё сменится идентификатор.

Создаю группу, добавляю в неё бота.

Для получения group id в Telegram добавляю бота @myidbot в группу и отправляю команду:

Получаем идентификатор группы, заметьте, что он отрицательный, не теряем минус.

Можно протестировать отправку сообщения в Telegram.

Сообщения отправляются в Telegram. Теперь можно заниматься настройкой, шлифовкой, дизайном и прочими неинтересными вещами.

Источник

Отправка уведомлений и графиков из zabbix в telegram

Я чаще всего использую стандартные уведомления от zabbix на почтовый ящик, это позволяет спокойно спать. Тем не менее, решил пойти в ногу со временем и попробовать настроить отправку оповещений из zabbix в популярный мессенджер telegram. К тому же я постоянно активно пользуюсь этим мессенджером и считаю его очень удобным.

Введение

Способов настройки уведомлений из заббикса в телеграм существует несколько. Их можно разделить по информативности:

  • Отправка только текстовых оповещений.
  • Отправка графиков.

Так же можно разделить по типу реализации:

  • Использовать встроенный webhook в zabbix.
  • Написать свой простой скрипт для уведомлений.
  • Взять готовую реализацию уведомлений в telegram на github.

Я постараюсь разобрать все возможные варианты. Идти будем от простого к сложному. Сначала настроим текстовые оповещения, потом добавим графики. Отправлять будем как в личку, так и в группу.

Я буду настраивать все в zabbix 5.0, установленный на Centos 8. Принципиального значения это не имеет, решение будет одинаково работать практически на всех дистрибутивах linux.

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

То же самое на Debian 10, если предпочитаете его:

Создание бота в telegram

Первым делом создадим бота, через которого будем слать оповещения из заббикса. Для этого добавляем себе в контакты @BotFather и пишем ему сначала /start, потом /newbot.

Мы создали бота для оповещений и получили для него token, который нам понадобится далее. Теперь нужно добавить в свой список контактов созданного бота. Для этого найдите его по имени. В моем случае имя @serveradminru_bot.

Теперь проверим, как работает отправка уведомлений через нашего бота. Для этого в консоли сервера набираем примерно такую команду:

Бот пришлет оповещение.

В моем запросе изменяемые данные следующие:

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. Добейтесь срабатывания триггера и проверяйте телеграм канал, в который настроили отправку сообщений.

Все работает. Если вам достаточно такого функционала, то можно оставлять и пользоваться. Но как по мне, так бледновато эти уведомления выглядят. Можно немного шаблоны изменить, чтобы было более читаемо. Так же есть возможность все настроить более красиво и наглядно, да еще и с графиками. Дальше я расскажу еще 2 разных способа отправки уведомлений из zabbix в telegram с графиками и готовыми ссылками на события.

Настройка zabbix на отправку графиков в telegram

Для отправки графиков в telegram предлагаю воспользоваться известным скриптом на питоне — https://github.com/ableev/Zabbix-in-Telegram. Пользуясь случаем, передаю благодарность автору за его создание. Копируем исходники себе.

Нам нужно будет установить несколько модулей python, перечисленные в requirements.txt. Для этого нам понадобится pip. Ставим его и модули.

Копируем в директорию /usr/lib/zabbix/alertscripts файлы zbxtg.py и zbxtg_settings.example.py из скачанного с github проекта. Последний переименовываем в zbxtg_settings.py. Назначаем пользователя zabbix владельцем этих файлов.

Приводим содержимое zbxtg_settings.py примерно к такому виду.

Жирным я выделил те параметры, что нужно поменять. Вам необходимо указать token от бота, который мы ранее создавали, полный url адреса сервера с zabbix. Обратите внимание на этот урл. Не факт, что у вас по localhost/zabbix/ будет открываться web интерфейс Zabbix. Это зависит от настроек Web сервера. Лично я указал просто http://localhost. Дальше указываете учетную запись мониторинга. Лучше всего сделать отдельную учетку с доступом только на чтение. Она нужна для получения графиков. И в конце нужно будет указать параметры доступа к базе данных заббикса. При желании, можете и иконки emoji изменить. Я меняю местами PROBLEM и WARNING. Желтый треугольник на проблемах смотрится более наглядно.

Сохраняем конфиг и проверяем работу скрипта. Если вы только создали бота, то не забудьте ему написать личное сообщение, для настройки персональных сообщений, либо из группы, чтобы он мог слать оповещения в группу. Если этого не сделать, получите ошибку.

Проверим из консоли работу скрипта.

В личку телеграма должно прийти тестовое сообщение. Если получите ошибку на тему того, что python не найдет, то поменяйте в файле zbxtg.py в самой первой строке python на python3 или создайте символьную ссылку.

А в консоли появится примерно такой вывод.

То же самое проделаем с группой.

Если все в порядке, двигаемся дальше. В случае ошибок, сразу разбирайтесь, в чем может быть проблема.

Идем в web интерфейс и добавляем 2 новых способа оповещений с помощью скрипта. Один для персональных сообщений, второй для групповых. Во втором случае надо добавить ключ —group, все остальное идентичное.

Так же нам нужно настроить шаблоны оповещений. Я предлагаю следующий вариант. Тип сообщений Проблема.

Тема по умолчанию <> — :
Сообщение по умолчанию Последнее значение: ()
zbxtg;graphs
zbxtg;graphs_period=1800
zbxtg;itemid:
zbxtg;title: —
Важность триггера:
Host: ()
Описание:

  • <> — макрос для выставления иконки emoji с восклицательным знаком
  • zbxtg;graphs — указывает, что будем отправлять график
  • zbxtg;itemid: — параметр автоматически определяет itemid для графика на основании информации об итеме в триггере, можно указать нужный itemid вручную
  • zbxtg;title — задает имя для заголовка графика

Все остальное понятно по смыслу, так как относится к стандартным макросам zabbix. Вот полный список параметров, которые поддерживает скрипт:

zbxtg;graphs включает отправку графиков
zbxtg;graphs_period=10800 период за который строится график
zbxtg;graphs_width=700 ширина графика
zbxtg;graphs_height=300 высота графика
zbxtg;itemid: выбор itemid для графика на основе триггера
zbxtg;title: — заголовок графика
zbxtg;debug включает режим отладки, некоторая дополнительная информация сохраняется в tmp_dir
zbxtg;channel включает возможность отправки оповещения в telegram channel
zbxtg;to:username1,username2,username3 можно сразу в шаблоне указать, кому будут отправляться оповещения
zbxtg;to_group:Group то же самое, что выше, только для групп

Для операции восстановления шаблон попроще.

Тема по умолчанию <> — :
Сообщение по умолчанию Server: ()
Описание:
Проблема устранена!
Время устранения проблемы:

И для подтверждения.

Тема по умолчанию <> — :
Сообщение по умолчанию подтвердил проблему со следующим сообщением:
Текущее состояние проблемы

Разные оповещения о разных событиях

Далее показываю на примере, как можно слать уведомления в личку и в группу, одновременно и по отдельности, в зависимости от настроенных условий. По каким-то действиям пишем в личку, по каким-то в группу. Достаточно просто сделать 2 отдельных пользователя для этого. Одному настроить в качестве способа оповещений личные сообщения, а второму указать группу. Затем в действиях, указывая, какому пользователю отправлять сообщение, выбирать способы уведомлений.

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

Если учетка техническая, только для оповещений, то доступ к веб интерфейсу можно не делать. Даем ей права доступа на чтение только к группе Zabbix servers, так как будем слать уведомления только по триггерам этого хоста.

Теперь добавляем пользователя и помещаем его в эту группу.

Добавляем ему telegram группу в способы оповещения. Добавлять можно не по id, а по имени группы, так удобнее.

Так же добавим персональные уведомления telegram пользователю admin. Здесь уже указываем id учетной записи .

Настраиваем действия. В данном примере я делаю отправку всех уведомлений пользователю Admin, у которого в способах оповещений указана личка telegram. А сообщения по конкретному триггеру Zabbix server: Zabbix agent is not available (for 3m) пользователю tg-group, у которого указана группа telegram.

Думаю, идею вы поняли. Можно очень гибко настроить уведомления в Zabbix и это очень круто и удобно. И работает из коробки. Проверим теперь, как будут выглядеть оповещения в telegram. Останавливаем на сервере zabbix-agent и ждем работы триггера с оповещениями.

Проверяем телеграм и видим там одинаковые уведомления и в группе, и в личке.

После обновления проблемы или закрытия, придут свои оповещения.

При этом, если сработает любой другой триггер, уведомление придет только в личку. В группу ничего не будет отправлено.

Шаблоны и графики в уведомлениях можете настраивать по своему вкусу. Обращаю внимание на графики. Они приходят в отдельных сообщениях. Далее я покажу еще один скрипт для уведомлений в telegram. Он немного по-другому работает — прикрепляет сразу ссылки на историю и триггер, а так же вкладывает графики в то же сообщение, что и текст.

Если у вас возникают ошибки с отправкой графиков, то проверить их работу можно в консоли. Вот пример запроса.

Это нормальный вывод ошибки, которая указывает на то, что выбран itemid 23301, которого либо не существует, либо к нему нет доступа, либо для него нет графика. Если выбрать правильный itemid, то после выполнения скрипта никакого вывода не будет, а в телеграм будет отправлен выбранный график.

Оповещения в telegram со ссылками на график и триггер

Расскажу про еще один интересный скрипт для отправки красивых и функциональных оповещений в telegram, в котором помимо всего прочего сразу же публикуются ссылки на триггер, график и некоторые другие полезности. Вот он на гитхабе — https://github.com/xxsokolov/Zabbix-Notification-Telegram. Инструкция от автора в некоторых местах не очень понятная, так что я немного повозился, прежде чем все получилось. В основном c xml были проблемы, но обо всем по порядку.

Клонируем к себе репозиторий.

Копируем в /usr/lib/zabbix/alertscripts папку zbxTelegram_files и файлы _config.yml, zbxTelegram.py, .requirements и zbxTelegram_config.example.py. Последний переименовываем в zbxTelegram_config.py.

Делаем пользователя zabbix владельцем этих файлов и разрешаем исполнение скрипта.

Автор скрипта предлагает запускать его в виртуальном окружении, поэтому поставим пакет virtualenv.

Переходим в /usr/lib/zabbix/alertscripts, создаем виртуальное окружение и активируем его.

Ставим зависимости и деактивируем окружение.

Редактируем конфигурационный файл zbxTelegram_config.py. Список параметров, которые нужно поменять.

В url на конце должен обязательно быть слеш. Дальше делаем все то же самое, что и ранее. Идем в Способы оповещений и добавляем новый тип, где в качестве скрипта указываем zbxTelegram.py.

Шаблоны тем сообщений можете настроить как вам больше нравится. Автор предлагает такие:

  • — мапинг значений ProblemResolvedUpdate в emoji (config: zabbix_status_emoji_map)
  • <> — мапинг значений Severity в emoji (config: zabbix_status_emoji_map)

В поле Сообщение копируется xml конфиг полностью, который приведен в файле actions.example. Копируйте его 1 в 1.

Во все шаблоны можете его вставить без изменений. Я немного попытался его править, но каждый раз потом получал ошибку парсинга xml. В итоге бросил. Автор перечисляет значение каждого парметра, так что можете попытаться настроишь шаблоны на свой вкус.

  • — прикреплять график (TrueFalse)
  • True — прикрепить ссылку url на History (TrueFalse)
  • True

    — прикрепить ссылку url из триггера (TrueFalse)

  • True — прикрепить теги (TrueFalse)
  • — период графика в секундах
  • — передача itemid
  • — передача triggerid
  • — передача eventid
  • — заголовок графика —
  • — передача url из триггера
  • — передача списка тэгов из триггера

Проверим работу уведомлений. Сначала через консоль.

В данном случае слова test менять нельзя. Именно они инициируют отправку тестового сообщения. Вот как оно выглядит.

То же самое можно сделать через web интерфейс.

Если все в порядке, подключайте данный тип уведомлений к пользователю, указывайте его в действиях и проверяйте. Уже не буду это подробоно описывать, так как устал. Материал и так очень объемный получился. В итоге уведомления в телеграме от этого скрипта будут выглядеть вот так:

Текст более информативен по дефолту и выглядит приятнее, графики в одном сообщении с текстом. В последней строке есть готовые ссылки на триггер, историю по итему. Только имейте ввиду, что url для ссылок берется из конфига и если у вас там указан localhost, то только с него и можно будет их посмотреть. Так что указывайте внешний, а не локальный url. Из минусов отмечу тоненькие графики без заливки. В скрипте от ableev они более наглядные.

Заключение

Теперь у нас zabbix работает современно, модно, молодежно 🙂 Использует telegram для отправки оповещений с графиками, ссылками и т.д. Функционал удобный и настраивается достаточно просто. У меня практически не было затруднений, когда разбирал тему. Беру себе на вооружение и использую по необходимости. Хотя сам не люблю оповещения в телеграме, и чаще всего их отключаю, как и от остальных программ. Не нравится, когда меня в каждую минуту могут отвлечь какие-то события. Проверка почты раз в 30 минут самая подходящая интенсивность для меня.

Тем не менее, при работе коллектива, оповещения в общую группу могут быть очень удобны. Особенно, если только на мониторинге сидят отдельные люди, в чью задачу входит оперативная реакция на события.

Источник


0

1

На подкроватном сервере настроил zabbix сервер. Настроил уведомления на телеграмм.
Но столкнулся с проблемой что не работают Поддерживаемые макросы.

В способах уведомлений — телеграмм в поле To используется макрос {ALERT.SENDTO} который как я понимаю берет ID комнаты/пользователя из настройки оповещений пользователя. Но этот макрос не работает. ID не подхватывается и при тестировании отправки выводится ошибка «Sending failed: Bad Request: chat not found.»
Если же в способах уведомлений — телеграмм в поле To вбить ID пользователя то сообщение приходит. Но с текстом {ALERT.MESSAGE}. Тоесть как я понимаю не отрабатывает скрипт {ALERT.MESSAGE}.

В Узлы сети — test — Макросы — Макросы узла сети и унаследованные, таких макросов нет. Есть только макросы унаследованные от шаблонов которые я добавлял.
Правда я не уверен должны ли они там быть

Как я понял эти скрипты идут в поставке с заббиксом и их не нужно вручную прописывать. Подскажите где можно их найти и как проверить почему они не работают?

Thank you for reading this post, don’t forget to subscribe!

Настра­и­ва­ем уве­дом­ле­ния из Zabbix 5 в Telegram. В раз­де­ле Administration → Media types (Адми­ни­стра­ция → Типы опо­ве­ще­ний) уже есть куча пред­уста­нов­лен­ных веб­ху­ков, в том чис­ле и Telegram, оста­лось его толь­ко настроить.

На самом деле есть несколь­ко спо­со­бов отправ­лять сооб­ще­ния из Zabbix в Telegram, но здесь я рас­смот­рю толь­ко отправ­ку с помо­щью вебхуков.

Нам пона­до­бит­ся создать бота для отправ­ки сооб­ще­ний. Бот может отправ­лять сооб­ще­ния поль­зо­ва­те­лям или в группу.

Создание бота в Telegram

Созда­дим бота, через кото­ро­го Zabbix будет отправ­лять сооб­ще­ния. Для управ­ле­ния бота­ми есть спе­ци­аль­ный бот @BotFather, добав­ля­ем его себе в кон­так­ты и пишем ему:

/start

Выво­дит­ся справ­ка по коман­дам. Для созда­ния бота пишем:

/newbot

Нам пред­ла­га­ют ука­зать для бота name (имя), я пишу:

Zabbix internet-lab.ru

Нам пред­ла­га­ют ука­зать для бота username (логин), он дол­жен окан­чи­вать­ся на «bot» или «Bot» я пишу:

zabbix_internet_lab_ru_bot

Бот создан, полу­ча­ем токен «Use this token to access the HTTP API«. Копи­ру­ем его и встав­ля­ем в Zabbix в раз­де­ле Administration → Media types → Telegram → Parameters → Token.

Сохра­ня­ем изме­не­ния. Кста­ти, в опи­са­нии так­же при­во­дит­ся крат­кая инструк­ция по настрой­ке Telegram:

https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/telegram

1. Register bot: send «/newbot» to @BotFather and follow instructions

2. Copy and paste the obtained token into the «Token» field above

3. If you want to send personal notifications, you need to get chat id of the user you want to send messages to:

    3.1. Send «/getid» to «@myidbot» in Telegram messenger

    3.2. Copy returned chat id and save it in the «Telegram Webhook» media for the user

    3.3. Ask the user to send «/start» to your bot (Telegram bot won‘t send anything to the user without it)

4. If you want to send group notifications, you need to get group id of the group you want to send messages to:

    4.1. Add «@myidbot» to your group

    4.2. Send «/getgroupid@myidbot» in your group

    4.3. Copy returned group id save it in the «Telegram Webhook» media for the user you created for  group notifications

    4.4. Send «/start@your_bot_name_here» in your group (Telegram bot won’t send anything to the group without it)

Отправка уведомления в Telegram пользователю

Если вы хоти­те отпра­вить лич­ное сооб­ще­ние поль­зо­ва­те­лю, то в его про­фи­ле в раз­де­ле Media нуж­но ука­зать chat id поль­зо­ва­те­ля из Telegram.

Для полу­че­ния chat id поль­зо­ва­те­лю нуж­но в Telegram доба­вить бота @myidbot и отпра­вить команду:

/getid

На самом деле таких ботов, кото­рые воз­вра­ща­ют иден­ти­фи­ка­то­ры доволь­но много.

Мож­но про­те­сти­ро­вать отправ­ку сооб­ще­ния в Telegram ссыл­кой «test».

Про­ве­ряю

Ошиб­ка.

Sending failed: Bad Request: chat not found.

Это нор­маль­но, ботам нель­зя отправ­лять сооб­ще­ния поль­зо­ва­те­лям без их согла­сия. Нахо­жу создан­но­го бота Zabbix internet-lab.ru и отправ­ляю ему команду:

/start

Про­ве­ряю ещё раз.

Media type test successful.

Сооб­ще­ние пришло.

Отправка уведомления в Telegram группе

Для отправ­ки уве­дом­ле­ния в груп­пу нуж­но эту груп­пу создать, доба­вить в неё создан­но­го бота и отпра­вить уве­дом­ле­ние на id группы.

ПРИМЕЧАНИЕ: если вы сде­ла­е­те груп­пу «супер­груп­пой», то у неё сме­нит­ся идентификатор.

Создаю груп­пу, добав­ляю в неё бота.

Для полу­че­ния group id в Telegram добав­ляю бота @myidbot в груп­пу и отправ­ляю команду:

/getgroupid@myidbot

Полу­ча­ем иден­ти­фи­ка­тор груп­пы, заметь­те, что он отри­ца­тель­ный, не теря­ем минус.

Мож­но про­те­сти­ро­вать отправ­ку сооб­ще­ния в Telegram.

Сооб­ще­ние отправлено.

Сооб­ще­ния отправ­ля­ют­ся в Telegram. Теперь мож­но зани­мать­ся настрой­кой, шли­фов­кой, дизай­ном и про­чи­ми неин­те­рес­ны­ми вещами.

https://github.com/midnight47/

По руководству был настроен бот, тест сообщений в чат проходил, даже сообщения отправлялись. После этого была сделана попытка подкрутить шаблоны сообщений, в т.ч. вставить эмодзи. И всё сломалось. А сейчас даже тест сообщений не проходит.

Media type test failed.

Sending failed: Bad Request: can’t parse entities: Character ‘{‘ is reserved and must be escaped with the preceding ».

5f59e716a24c1025841492.png

Если убрать скобочки, тест проходит. Но в реальных сообщениях разных символов, в том числе '-', '(' и т.п. дофига и все эти сообщения оседают в Action Log.

Ну, и чтоб 2 раза не вставать — как например в subject сообщения вставить эмодзи, например, SOS с кодом xF0x9Fx86x97 ? Маркдаун :sos: тоже не срабатывает. Если попытаться вставить сам символ, то ругается при уже сохранении страницы Media Type.


  • Вопрос задан

    более двух лет назад

  • 2321 просмотр

Эмоджи можно определять как Unicode Surrogates (вида `u01234uABCD` )

Тогда в JS-скрипте отправки сообщения в телеграм надо 29-ю строку вида
data = JSON.stringify(params);
заменить на

var dataJSON = JSON.stringify(params);
        var re = /\u([0-9A-F]{4})/g;
        data = dataJSON.replace(re, 'u$1');

Суть в том, что JSON.stringify экранирует все слэши в Surrogates, получается два слэша. Поэтому, после того, как получили JSON с data для отправки надо вернуть один слэш и это изменение делаем только для Unicode Surrogates, а не вообще по тексту. Регулярка в помощь.

Пригласить эксперта

В 5 версии заббикса (у меня 5.2.5) смайлы не работают кодами, но! их можно скопировать прямо картинками и вставить в шаблон
типа вот так:
——————————————————————————
✅Проблема решена через {EVENT.DURATION} в {EVENT.RECOVERY.TIME} дата: {EVENT.RECOVERY.DATE}

единственное, не все проходят, возможно, UTF16 не годятся.
У меня такие подошли ✅ ‼️ ⚠️


  • Показать ещё
    Загружается…

25 июн. 2023, в 03:49

15000 руб./за проект

25 июн. 2023, в 03:19

4500 руб./за проект

25 июн. 2023, в 02:28

10000 руб./за проект

Минуточку внимания

  • Ошибка при тестировании базы данных 1с
  • Ошибка при татуаже губ
  • Ошибка при сохранении файла скрипта изменения не сохранены bitrix
  • Ошибка при таможенном оформлении алиэкспресс
  • Ошибка при сохранении файла null