В предыдущих статьях серии про Zabbix мы рассказывали о том, как контролировать различное оборудование и сервисы. Однако не менее важно настроить оповещения о событиях, требующих реакции со стороны системного администратора.
В этой статье мы расскажем о том, как настроить отправку сообщений о срабатывании триггеров Zabbix по электронной почте, через SMS и Телеграм. Вы также научите свой Zabbix звонить администратору по телефону и сообщать о критических событиях синтезированным голосом с помощью сервиса голосовых рассылок Звонобот.
Отправка сообщений по электронной почте
Для того чтобы Zabbix мог отправлять сообщения по электронной почте, необходимо сделать следующее:
-
настроить способы оповещений Media Types;
-
назначить Media с типом Email пользователю Zabbix;
-
добавить действие при срабатывании триггера Trigger Action
Расскажем об этом подробнее.
Настройка способов оповещений Media Types
Если в Web-интерфейсе Zabbix выбрать Media Types из меню Administration, вы увидите многочисленные способы оповещений, доступные для настройки в Zabbix. Часть из них показана на рис. 1.
Мы будем использовать готовые способы оповещений Email и Telegram, а также создадим собственные — p1sms.ru (для отправки SMS) и Zvonobot (для голосовых сообщений по телефону).
Если вы находитесь там, где есть интернет, то сможете получать сообщения через Email и Telegram. Но бывает и так, что доступны только SMS и голосовые звонки. Чтобы не пропустить важные сообщения от Zabbix, пригодятся все эти способы.
Чтобы настроить отправку электронной почты, щелкните на странице Media Types строку Email. Далее вам нужно будет заполнить форму, указав в ней параметры исходящего почтового сервера (рис. 2).
Мы показали случай, когда используется собственный почтовый сервер, доступный на порту 25 с использованием STARTTLS. Сообщения будут отправлены на адрес admin@my-domain.ru (имя домена приведено только для примера).
В ответственных случаях безопаснее использовать собственный почтовый сервер, который находится под вашим контролем. При необходимости можно настроить отправку почты и через публичные почтовые сервисы, такие как Google Mail или Яндекс Почту. Помимо официальной документации в интернете есть инструкции по настройке, например, здесь.
Настроив способ оповещения Email, выполните проверку с помощью ссылки Test, расположенной справа напротив Email в списке способов оповещений, показанном на рис. 1.
Щелкните эту ссылку и заполните форму, указав в ней адрес получателя Send to, тему сообщения Subject и текст сообщения Message. Затем щелкните кнопку Test (рис. 3).
Если настройки почтового сервера указаны правильно, вы получите сообщение на указанный адрес электронной почты.
На вкладке Message Templates можно изменить стандартные шаблоны сообщений, отправляемых по электронной почте.
Назначение Media с типом Email пользователю Zabbix
Чтобы способ оповещения заработал, его нужно назначить пользователю Zabbix, например, Admin.
Выберите в меню Administration раздел Users, щелкните имя пользователя Admin, а затем откройте вкладку Media. На рис. 4 мы показали ситуацию, когда для пользователя было добавлено несколько способов оповещения, в том числе и способ Email.
Для добавления способа оповещения Email щелкните ссылку Add. В списке Type выберите строку Email.
В поле Send to укажите адрес электронной почты, по которому должно отправляться оповещение. С помощью поля When active можно ограничить дни и часы отправки сообщений.
Набор флажков Use if severity позволяет задать уровни серьезности триггеров, при срабатывании которых необходимо отправить сообщение по указанному адресу (рис. 5).
В нашем случае сообщения отправляются по электронной почте круглосуточно, причем при срабатывании триггера с любым уровнем серьезности.
Если нужно отредактировать или удалить способ оповещения, воспользуйтесь ссылкой Edit или Remove, соответственно (рис. 4).
Добавление действий при срабатывании триггера Trigger Actions
Итак, мы настроили и проверили способ оповещения Email, а также добавили его для пользователя Admin.
Теперь нужно добавить действие при срабатывании триггера. Для этого в меню Configuration выберите меню Action, а из него — строку Trigger Actions.
На рис. 6 показан уже сформированный список действий для различных способов оповещений.
Здесь действие zabbix03 action, заключающееся в отправке сообщения по электронной почте, выполняется для всех уровней серьезности, кроме Disaster. Действие SMS Notify выполняется при срабатывании триггеров с уровнем серьезности High и Disaster. И, наконец, действие DISASTER_ALERT_Phone_CALL определено для звонков по телефону при срабатывании триггеров уровня Disaster.
Чтобы создать новое действие, воспользуйтесь кнопкой Create action на странице Trigger Actions. Вам будет предложено добавить действие на вкладке Action (рис. 7).
Задайте имя действия, а затем щелкните ссылку Add, чтобы добавить операцию. При добавлении выберите в списке Type уровень серьезности триггера Trigger severity. Чтобы сообщение электронной почты отправлялось для любого уровня серьезности, кроме Disaster, выберите значения полей Operator и Severity, как это показано на рис. 8.
Далее для добавленного действия на вкладке Operations необходимо добавить операции. На рис. 9 три операции уже добавлены.
Для добавления операции воспользуйтесь ссылкой Add. Здесь можно добавить операции, которые будут выполнены при срабатывании триггера, при восстановлении его состояния (поле Recovery operations), а также при обновлении состояния (поле Update operations).
На рис. 10 мы показали форму редактирования уже добавленной операции.
Здесь как минимум необходимо выбрать пользователя в поле Send to users и способ извещения Email в поле Send only to.
Вы также можете отредактировать шаблон темы сообщения Subject и шаблон сообщения Message, отметив флажок Custom message. Если этого не сделать, будут использованы шаблоны сообщения по умолчанию, определенные в способе оповещения Email.
Официальная документация, имеющая отношение к настройке отправки сообщений по электронной почте, находится здесь:
-
конфигурирование способа оповещения Email (на русском языке для версии 6.0);
-
настройка действий (на русском языке)
Отправка сообщений в Telegram
Сервер Zabbix версии 6.2 содержит встроенную поддержку отправки сообщений в мессенджер Telegram, основанную на использовании Telegram Bot API и Zabbix webhook.
Мы расскажем о том, как настроить отправку персональных сообщений. Если нужно отправлять сообщения в группу Telegram, то соответствующий способ настройки описан в официальной документации Telegram webhook, а также в статье.
Создание бота
Прежде всего создайте новый бот с помощью бота @BotFather. Для этого отправьте боту @BotFather команду «/newbot». Вам будет предложено ввести имя для нового бота, а также имя пользователя.
Результат показан на рис. 11 (имена и токен приведены только для примера).
Для настройки отправки сообщений в Telegram вам потребуется токен HTTP API, выделенный на рис. 11 рамкой красного цвета, а также идентификатор пользователя Telegram, который будет получать оповещения из Zabbix.
Получение идентификатора пользователя Telegram
Свой идентификатор пользователя Telegram можно получить с помощью бота @myidbot, доступный по ссылке https://t.me/myidbot.
Запустите этот бот и введите ему команду «/getid». В ответ вы получите собственный идентификатор (рис. 12, идентификатор показан только для примера).
Запуск бота
Получив идентификатор, подключитесь к боту, созданному на предыдущей шаге, и выдайте ему команду «/start». Это необходимо, чтобы бот смог отправлять вам сообщения.
Добавление способа оповещений Telegram
Теперь в Web-интерфейсе Zabbix откройте меню Administration, выберите из него строку Media Types, а затем найдите и щелкните ссылку Telegram.
ваш идентификатор, полученный от бота @myidbot, а в поля Скопируйте токен, полученный от бота @BotFather при создании вашего бота, в поле Token, а затем щелкните кнопку Update (рис. 13, токен приведен только для примера).
Добавив способ оповещения, протестируйте его с помощью ссылки Test.
При тестировании в поле Token уже должен находиться токен вашего бота. Скопируйте в поле To ваш идентификатор, полученный от бота @myidbot, а в поля Subject и Message — тему и текст сообщения, соответственно.
Если все будет хорошо, вы увидите сообщение об успешном тестировании (рис. 14).
Вы также получите тестовое сообщение в Telegram (рис. 15).
Если все в порядке, можно переходить к назначению настроенного способа оповещения Telegram пользователю Zabbix, а также к добавлению этого способа к существующему или новому действию.
Назначение типа оповещения Telegram пользователю
Ранее вы уже назначали тип оповещения Email пользователю Admin. Теперь нужно повторить эту операцию для типа оповещения Telegram.
Откройте вкладку Media, выбрав в меню Administration раздел Users и щелкнув имя пользователя Admin. Далее воспользуйтесь ссылкой Add, чтобы добавить новый тип оповещения.
Выберите в списке Type способ Telegram, а в поле Send To идентификатор пользователя Telegram, который мы получили раньше от бота @myidbot.
С помощью флажков Use if severity укажите серьезность триггеров, при срабатывании которых нужно отправлять сообщения в Telegram. На рис. 16 показана установка флажков для случая, когда в Telegram требуется отправка для уровней от средней (Average) до катастрофической (Disaster).
Добавление оповещения в Telegram для действия при срабатывании триггера
На следующем шаге в меню Configuration выберите меню Action, а потом из него — строку Trigger Actions. Затем откройте вкладку Operations (рис. 17).
На вкладке Operations с помощью ссылки Add добавьте новую операцию, выбрав из списка Send to users пользователя Admin, а из списка Send only to — строку Telegram (рис. 18).
Теперь при выполнении действия вы получите сообщение о срабатывании триггера (а также о восстановлении его состояния) в мессенджер Telegram.
Красивые сообщения в Telegram с использованием Emoji
Вы можете «оживить» сообщения, отправляемые сервером Zabbix в Telegram с помощью символов Emoji (рис. 19).
Чтобы это сделать, добавьте символы Emoji в тему Subject для шаблонов сообщений способа оповещений Telegram, доступных на вкладке Message templates (рис. 20).
Символы Emoji можно скопировать через буфер обмена Clipboard со страницы https://apps.timwhitlock.info/emoji/tables/unicode, а затем вставить их в нужное место шаблона (рис. 21).
Символы Emoji полезны, так как привлекут ваше внимание к важным сообщениям.
Отправка SMS из Zabbix
В сервере Zabbix среди встроенных способов оповещений Media Types есть отправка SMS. Однако этот способ требует наличия GSM модема, подключенного к последовательному порту сервера Zabbix, о чем написано в документации.
У нас не было желания искать совместимый GSM модем, приобретать его и размещать в дата-центре. Поэтому мы решили использовать для отправки SMS один из многочисленных онлайн-сервисов, специализирующихся на решении этой задачи.
Выбор сервиса для отправки SMS
Как оказалось, отправка SMS через онлайн-сервисы стоит заметных денег, причем для некоторых операторов мобильной связи есть еще и ежемесячная абонентская плата. Стоимость отправки SMS на момент написания этой статьи составляла от 5 руб. до 20 руб. за одно сообщение.
Некоторые сервисы допускают отправку SMS без абонентской платы, однако не для всех операторов мобильной связи (например, https://sms.ru/).
В итоге был выбран сервис P1SMS https://p1sms.ru/. После настройки шаблона сообщений удалось отключить модерацию и отравлять сообщения по цене 5 руб. за штуку. Если в вашей информационной системе критичные ошибки не идут большим потоком, то это может быть разумным выбором.
Как мы уже говорили, доставка оповещений через SMS будет работать даже в том случае, если в зоне нахождения вашего смартфона нет интернета (или он очень дорогой), но есть мобильная связь.
Скрипт отправки SMS через P1SMS
Zabbix позволяет вам создавать собственные способы оповещения, основанные на вызове скриптов. Это описано в документации (на русском языке для версии 6.0).
Для отправки SMS мы подготовили скрипт, которой требует небольшого редактирования. Вам потребуется изменить в нем АПИ-ключ и номер телефона, на который будут отправляться сообщения от Zabbix.
Чтобы получить АПИ-ключ, зарегистрируйтесь на сайте P1SMS по адресу https://p1sms.ru/. Ключ можно скопировать на странице https://admin.p1sms.ru/panel/apiinfo.
Далее создайте на сервере Zabbix каталог /usr/lib/zabbix/alertscripts
для скриптов добавляемых способов оповещения. Отредактируйте файл /etc/zabbix/zabbix_server.conf
, удалив символ комментария со строки:
AlertScriptsPath=/usr/lib/zabbix/alertscripts
Затем сохраните файл конфигурации zabbix_server.conf, перезапустите сервис Zabbix и убедитесь, что он работает:
# systemctl restart zabbix-server
# systemctl status zabbix-server
Скрипт отправки SMS нужно скачать по этому адресу.
Переименуйте его в p1sms.pl и запишите в каталог /usr/lib/zabbix/alertscripts
.
Сделайте владельцем скрипта пользователя zabbix и разрешите запуск скрипта:
# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/p1sms.pl
# chmod +x /usr/lib/zabbix/alertscripts/p1sms.pl
Проверьте, что владелец и права установлены правильно:
# ls -lh /usr/lib/zabbix/alertscripts/p1sms.pl
-rwxr-xr-x 1 zabbix zabbix 2.1K Oct 18 13:06 /usr/lib/zabbix/alertscripts/p1sms.pl
Найдите в скрипте p1sms.pl функцию sendp1sms и отредактируйте в ней две строки:
my $api_key = '*************';
my $phone_number = '';
Укажите здесь свой API-ключ сервиса P1SMS и номер мобильного телефона для отправки SMS в формате 7хххххххххх.
Добавление способа оповещения p1sms.ru
Откройте в Web-интерфейсе Zabbix меню Administration, выберите из него строку Media Types, а затем щелкните кнопку Create media type. Появится страница добавления нового способа оповещения, которую вам нужно заполнить, как это показано на рис. 22.
В поле Name введите название способа оповещения p1sms.ru, а затем выберите из списка Type строку Script. Укажите имя скрипта p1sms.pl в поле Script name.
Далее добавьте в поле Script parameters три параметра: {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE} (именно в этом порядке). Должно получиться так, как показано на рис. 22. Сохраните изменения.
Добавление шаблона сообщений SMS
Мы будем отправлять SMS при недоступности контролируемых серверов с помощью шаблона ICMP Ping, который есть среди готовых шаблонов Zabbix. Вам нужно добавить этот шаблон ко всем серверам, которые вы собираетесь контролировать. Установите в этом шаблоне для метрики Unavailable by ICMP ping уровень серьезности Disaster.
Для добавления шаблона на сервис P1SMS откройте раздел редактирования шаблонов без модерации. Он доступен в разделе Управление, строка Шаблоны без модерации.
Добавьте здесь такой шаблон с помощью кнопки СОЗДАТЬ ШАБЛОН:
ICMP ping %w Down (0)
Добавленный шаблон показан на рис. 23.
Инструкция по составлению шаблонов появится на странице добавления шаблона после того, как вы щелкните кнопку СОЗДАТЬ ШАБЛОН.
Шаблоны без модерации нужны для ускорения отправки SMS через сервис P1SMS. Если таких шаблонов нет, или если отправляемое сообщение не будет соответствовать шаблону, SMS попадет на модерацию и может быть задержано на время до 10 минут. Так как нам нужно узнать о проблеме как можно скорее, придется использовать шаблоны.
После добавления шаблона дождитесь, когда он пройдет модерацию. При необходимости вы можете связаться со службой поддержки через онлайн-чат на сайте P1SMS.
Далее протестируйте добавленный способ оповещений с помощь кнопки Test в разделе Media Types. Используйте здесь сообщение, подходящее под шаблон, например «ICMP ping (hcp2.user-domain.ru:icmpping): Down (0)» (рис. 24).
Состояние отправки SMS вы можете узнать на сайте P1SMS в разделе Отчеты, выбрав из меню строку Отправленные СМС.
Назначение типа оповещения p1sms.ru пользователю
После успешного тестирования назначьте тип оповещения p1sms.ru пользователю Admin, как вы это делали раньше. В нашем случае установлены флажки для отправки SMS при уровне серьезности от высокой (High) до катастрофической (Disaster).
Добавление действия для отправки SMS
Также не забудьте добавить действие для отправки SMS. Для этого в меню Configuration выберите меню Action, и далее строку Trigger Actions.
Щелкните кнопку Create action, а затем добавьте действие SMS Notify, как это показано на рис. 25.
Добавьте операцию на вкладке Operations (рис. 26).
Для того чтобы отправляемое сообщение соответствовало шаблону без модерации, настройте операцию с помощью ссылки Edit.
У сообщения должна быть тема {TRIGGER.NAME}:, а само сообщение должно выглядеть так:
{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
Кроме того, выберите в поле Send to users пользователя Admin.
Настроенная операция показана на рис. 27.
Тестирование отправки SMS при недоступности сервера
Для тестирования используйте какой-нибудь некритичный сервер, например, виртуальную машину, которую можно безопасно останавливать и запускать заново. Добавьте ее в узлы на сервере Zabbix и подключите шаблон ICMP Ping. Установите в этом шаблоне для метрики Unavailable by ICMP ping уровень серьезности Disaster.
Теперь, если вы завершите работу этой машины, то получите сообщение SMS (рис. 28).
SMS выглядят не так красиво, как сообщения в Telegram, однако они придут туда, где нет интернета.
Сообщение SMS легко пропустить, а вот на вызов по телефону вы скорее всего отреагируете (конечно, если в смартфоне не отключен звук).
Для повышения вероятности реагирования настроим отправку оповещений о катастрофических проблемах уровня Disaster голосовым звонком на телефон с использованием сервиса Звонобот.
Настройка голосовых звонков аналогична только что рассмотренной настройке для SMS, поэтому мы остановимся только на основных моментах.
Прежде всего, мы сделаем так, чтобы звонок поступал не сразу после обнаружения аварии, а через 10 минут. Дело в том, что часто недоступность сервера может быть кратковременной, после чего все восстанавливается само по себе, и звонить будет уже не нужно. Так бывает, например, при возникновении непродолжительных проблем в сети или при временной потере связности дата-центров.
Кроме того, если становятся недоступными сразу несколько серверов, нам достаточно получить только один звонок по телефону. И еще не повредит повторный звонок через полчаса, если в первый раз дозвониться не удалось.
Добавление способа оповещения Zvonobot
Добавьте в Media types новый способ оповещения Zvonobot, аналогично тому, как мы добавляли способ p1sms.ru (рис. 29).
Выберите в списке Type строку Script, а в поле Script name введите имя скрипта zvonobot.pl. Кроме того, добавьте параметры, как это показано на рис. 29.
Скрипт zvonobot.pl можно скачать здесь.
Не забудьте переименовать скрипт перед его размещением в каталоге /usr/lib/zabbix/alertscripts
.
Сделайте владельцем скрипта пользователя zabbix и разрешите запуск скрипта:
# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/zvonobot.pl
# chmod +x /usr/lib/zabbix/alertscripts/zvonobot.pl
Проверьте, что владелец и права установлены правильно:
ls -lh /usr/lib/zabbix/alertscripts/zvonobot.pl
-rwxr-xr-x 1 zabbix zabbix 4.8K Oct 17 15:40 /usr/lib/zabbix/alertscripts/zvonobot.pl
Отредактируйте в скрипте три строки:
my $api_key = '';
my $phone_number = '';
my $outgoingPhone = '';
Ключ $api_key можно получить по адресу: https://lk.zvonobot.ru/panel/profile в личном кабинете после регистрации в сервисе Звонобот.
Для работы скрипта zvonobot.pl нужно установить на сервер Zabbix memcached, а также необходимые модули Perl:
-
LWP::UserAgent
-
HTTP::Request
-
JSON
-
Data::Dumper
Вам также потребуется два номера телефона. В переменную $phone_number запишите номер телефона, на который будет звонить Zabbix при обнаружении катастрофической проблемы (в формате 7*****).
Второй номер телефона запишите в переменную $outgoingPhone. Телефон с этим номером потребуется вам всего один раз для получения SMS от сервиса Звонобот. Звонки будут поступать именно от этого исходящего номера, поэтому вам их будет легко идентифицировать. Исходящий номер должен быть добавлен как личный и подтвержден в разделе ДРУГОЕ — Номера телефонов личного кабинета https://lk.zvonobot.ru/panel/phones.
После добавления способа оповещения Zvonobot протестируйте его с помощью ссылки Test. В поле Send to укажите номер телефона, на который должны приходить звонки от Zabbix (рис. 30).
При успешном тестировании вы получите звонок, и робот произнесет синтезированным голосом текст сообщения Message, а также тему Subject.
Назначение способа оповещения Zvonobot пользователю Zabbix
Выберите в меню Administration раздел Users, щелкните имя пользователя Admin, а затем откройте вкладку Media. Добавьте способ оповещения Zvonobot, как это было показано ранее на рис. 4.
В поле Use if severity отметьте флажок Disaster, чтобы звонки поступали только при самых серьезных проблемах.
Добавление типа оповещения в действия
Добавьте действия для способа Zvonobot. Как и раньше, в меню Configuration выберите меню Action, далее строку Trigger Actions, а затем щелкните кнопку Create action.
Мы создали действие DISASTER_ALERT_Phone_CALL, определив для него сразу две операции, имеющие отношение к способу Zvonobot (рис. 31).
Обратите внимание, что в поле Steps мы указали шаг эскалации 2-2, а в поле Step duration (длительность шага эскалации) — значение 20 минут (рис. 32).
На рис. 31 видно, что сразу после возникновения проблемы категории Disaster сообщение отправляется в Telegram, затем на электронную почту (шаг эскалации 1-1). Еще через 10 минут выполняется звонок через сервис Звонобот (шаг 2-2), который потом повторяется через 30 минут (шаг 3-3).
Когда сработают все шаги эскалации, на основной панели Zabbix Global View можно будет увидеть время и результат завершения каждого шага (рис. 33).
Применение эскалации описано в документации (для версии 6.0 на русском языке).
Исключение повторных звонков
Чтобы исключить повторные звонки, которые могут поступить при одновременном отказе нескольких контролируемых хостов, в скрипте zvonobot.pl вызывается функция not_recently_called:
if(not_recently_called(20*60))
{
phone_call_zvonobot($api_url, $api_key, $phone_number, $outgoingPhone, $message);
}
Она создает в memcached ключ “Zabbix_phone_monitor” со значением “Phone was called”, который будет автоматически удален по истечении заданного времени (в нашем случае через 20 минут).
Автор: Александр Фролов.
Содержание
- Zabbix 5 — что не так с извещениями в Telegram?
- ZABBIX — Настройка механизма оповещения
- ZABBIX — Создание способа оповещения.
- ZABBIX — Создание действия.
- Zabbix не рассылает уведомления кому нужно
- Zabbix 5 — настраиваем Email уведомления
- Отправка email уведомлений в zabbix 2.4
- Введение
- Настройка ssmtp для авторизации на почтовом сервере
- Email script для отправки оповещений
- Настройка в Zabbix отправки уведомлений
- Проверка оповещений в Zabbix
- Заключение
Zabbix 5 — что не так с извещениями в Telegram?
По руководству был настроен бот, тест сообщений в чат проходил, даже сообщения отправлялись. После этого была сделана попытка подкрутить шаблоны сообщений, в т.ч. вставить эмодзи. И всё сломалось. А сейчас даже тест сообщений не проходит.
Если убрать скобочки, тест проходит. Но в реальных сообщениях разных символов, в том числе ‘-‘ , ‘(‘ и т.п. дофига и все эти сообщения оседают в Action Log.
Ну, и чтоб 2 раза не вставать — как например в subject сообщения вставить эмодзи, например, SOS с кодом xF0x9Fx86x97 ? Маркдаун :sos: тоже не срабатывает. Если попытаться вставить сам символ, то ругается при уже сохранении страницы Media Type.
- Вопрос задан более года назад
- 936 просмотров
Эмоджи можно определять как Unicode Surrogates (вида `u01234uABCD` )
Тогда в JS-скрипте отправки сообщения в телеграм надо 29-ю строку вида
data = JSON.stringify(params);
заменить на
Суть в том, что JSON.stringify экранирует все слэши в Surrogates, получается два слэша. Поэтому, после того, как получили JSON с data для отправки надо вернуть один слэш и это изменение делаем только для Unicode Surrogates, а не вообще по тексту. Регулярка в помощь.
По умолчанию поле Parsemode пустое. Попробуйте очисти поле «Parsemode»
Я не просил перевести текст, это я отлично понимаю. Пару дней назад это проходило
Источник
ZABBIX — Настройка механизма оповещения
ZABBIX и его оповещения — не сложный механизм, тем не менее для его функционирования необходимо провести ряд определенных настроек. Фактически нам потребуется совершить немного больше действий для создания оповещения. Давайте разобьем их на 2 части, которые в статье будут разбиты разными заголовками:
1. Создание способа оповещения
2. Создание действия.
Поехали.
ZABBIX — Создание способа оповещения.
Для того, чтобы получать письма через E-mail, нам нужно перейти в раздел «Администрирование» и в появившейся строке нажать кнопку «Способы оповещений».
ZABBIX — Как создать способ оповещения
Как видите не всегда для настройки используется сочетание «Настройка» — > «Узлы сети», сегодняшний случай — исключение :). Давайте двигаться дальше. На появившейся странице в правом верхнем углу нажимаем на кнопку «Создать способ оповещения», после чего попадаем на страницу создания.
Как создать способ zabbix оповещения —
Страница создания
Как всегда пробежимся по предлагаемым полям:
- Имя — видимо имя способа оповещения
- Тип — способ доставки оповещения
- SMTP сервер — почтовый сервер, который необходим для отправки оповещения.
- SMTP email — адресат, от которого заббикс будет высылать оповещение.
Остальное можно оставить без изменений. (Но опять же зависит от ваших задач, не забываем, что мы в статьях стараемся как можно быстрее развернуть мониторинг). Нажимаем кнопку «Добавить», после чего попадаем на страницу способов оповещений, где уже имеется наш способ, который мы только что добавили.
ZABBIX — Создание действия.
Теперь нам необходимо создать так называемое «Действие», которое при определенных условиях будет использовать наш способ оповещения. Для этого нам нужно перейти на вкладку «Настройка» и в появившейся строке нажать на кнопку «Действия», как показано на скриншоте ниже.
Как создать действие в ZABBIX — Страница действий
Обратите внимание, что здесь отображается вся информация по действиям, уже имеющимся в системе. Нам нужна кнопка «Создать действие».
В пример я приведу действие «KKT Notification»:
Как создать действие в ZABBIX — Страница создания
Снова пройдемся по полям:
- Имя — видимое имя действия.
- Тип вычисления — здесь необходимо выбрать будут складываться ваши условия и выдавать алерт, или если хотя бы одно из условий нарушено, то генерируется алерт.
- Условия — условия срабатывания действия.
Далее переходим на вкладку «Операции». Здесь нам необходимо нажать на кнопку «Новый» в поле «Операции».
Как создать действие — Новая операция
В появившихся поля нам необходимо указать:
- Шаги — количество выполнения данной операции.
- Длительность шага — время выполнения 1 шага.
- Тип операции — сама операция, это поле уже на ваш выбор.
- Отправлять группам пользователей — отправка сразу нескольким пользователям, входящих в указанную группу.
- Отправлять пользователям — отправка указанным пользователям. (не забудьте поставить себя и в своем профиле указать свой электронный адрес)
- Отправлять только через — способ отправки. (Нам нужен Email)
- Условия — дополнительные условия отправки. (Указываем «Событие подтверждено = Не подтверждено»)
Для того, чтобы добавить группу пользователей, пользователя отдельно или дополнительное условие, нажимайте на кнопки в этих полях «Добавить» и «Новый».
После нажатия кнопки «Добавить», вас перенесет на страницу действий, где появится только что созданное действие. Теперь нам осталось проверить работоспособность нашего действия. Для этого мне необходимо снова зайти на сервер vtrsagent и выключу блокнот.
После проделанных операций мне пришло письмо на почтовый адрес с содержанием проблемы:
Как создать действие — Письмо от ZABBIX
Выглядит не очень презентабельно, но если вчитаться, то можно понять, что упал блокнот на сервере.
Ну-с, собственно все, могу вас поздравить! Вы только что создали систему оповещения алертов в заббиксе!
Если у вас остались вопросы, пишите их в комментариях или задавайте в группе ВКонтакте! Не забывайте подписываться на наши ресурсы, который расположены уже на Youtube, на Facebook и уже даже в Twitter! Поддержите проект!
Поделиться в соц. сетях:
Понравилась статья? Поблагодари автора, накорми печеньками! 🙂
Источник
Zabbix не рассылает уведомления кому нужно
Есть несколько групп в заббиксе, в них занесены пользователи. Один из них я — с типом юзера Zabbix Super Admin — мне нотификации приходят как надо. Другие юзеры — Zabbix Admin или Zabbix User, без разницы, почту на них заббикс почему-то не отправляет. Хотя media у этих пользователей настроен идентично моему. Zabbix 1.8.8
У Zabbix, как я понял, богатый функционал, вот только email’ы он отправлять не умеет, механизм actions сделан просто через Ж. Но это сущая мелочь, а так — отличная система мониторинга через (Ж) браузер.
> вот только email’ы он отправлять не умеет
Гыгы. Насмешил. По сабжу я разобрался уже, у тех пользователей, которым должны были уходить напоминания, не было хотя-бы read-only прав на нужные группы хостов.
Пока лучше заббикса систем мониторинга я не видел, хотя перепробовал очень много.
У меня не отправляет ни одному из пользователей в группе Zabbix administrators. У них что, тоже прав нет?
Да меня уже даже отправка конкретных каких-то уведомлений не интересует, нужно, чтобы он вообще хоть что-то отправил почтой, чтобы я увидел, умеет он делать ЭТО или нет. По Jabber’у он мне отправил целых два сообщения из 20-ти наверное, которые реально должен был бы прислать, а почта упорно молчит.
А поскольку это писали PHP-кодеры, у которых принципиально не принято писать подробные логи работы, то я даже понять не могу, что там может быть не так. Sendmail на хосте есть, письма с тем же MAIL FROM, что в Заббиксе, отправляет.
Если у Zabbix’а есть проблемы с отправкой почты, он мог бы мне об этом хоть как-то сказать, но эта зараза упорно молчит.
это очень провакационное сообщение. многие просто не читая доку берутся настраивать , надеясь на интуитивно понятный интерфейс , или привыкшие к нагиосу.
Источник
Zabbix 5 — настраиваем Email уведомления
В пятом ZABBIX появилось много встроенных типов уведомлений. Если раньше была возможность отправить письмо или SMS, то теперь есть вебхуки для уведомлений в Discord, Telegram, Slack, Microsoft Teams, Jira, Redmine и прочее, на скриншоте будет виден полный список. Однако самый первый тип уведомлений, который будет настраивать системный администратор — это Email.
Настройка Email уведомлений в ZABBIX 5 немного изменилась, система стала, на мой взгляд, удобнее и логичнее.
Переходим в раздел Administration > Media types.
Все лишние типы уведомлений переводим в статус Disabled. Для Email устанавливаем (оставляем) статус Enabled.
Нажимаем на Email. Здесь нужно указать параметры почтового сервера для отправки сообщений.
- Name: Email.
- Type: Email
- SMTP server: указываем адрес почтового сервера, через который будем отправлять письма
- SMTP server port: порт для отправки писем, по умолчанию TCP 25
- SMTP helo: текст приветствия, который будем отправлять почтовому серверу, обычно он совпадает с доменом или именем сервера
- SMTP email: адрес отправителя
- Connection security: настройки безопасности соединения
- Authentication: тип аутентификации
- Message format: формат сообщения: текст или HTML.
- Description: описание
- Enabled: устанавливаем галку для включения
Указываем настройки своего почтового сервера. Update.
Если проскроллить страничку вправо (этот момент мне не нравится, весь интерфейс заточен на большие мониторы, неудобно), то можно найти ссылку Test, которая позволяет отправить тестовое письмо.
Нажимаю Test.
- Send to: указываем адрес получателя
- Subject: тема письма
- Message: текст письма
Test.
Если ZABBIX не сможет отправить сообщение, то получим ошибку «Media type test failed«. В этом случае нужно разбираться, все ли порты открыты, правильно ли указаны настройки почтового сервера, разрешено ли почтовому серверу отправлять письма с IP адреса ZABBIX сервера.
Если ZABBIX сможет отправить сообщение, то увидим «Media type test successful«.
Теперь нужно разрешить ZABBIX серверу отправлять сообщения о проблемах администраторам. Переходим в раздел Configuration > Actions.
Здесь есть предустановленное действие Report problems to Zabbix administrators. Оно отправит уведомления через активные Media всем участникам группы Zabbix administrators. Переводим его в статус Enabled. Можно ткнуть в данное действие и настроить его под свои реалии, можно добавить своё действие, можно для каждого типа уведомления настроить разные действия. Можно выполнять действия для других групп пользователей. Меня пока всё устраивает, я есть в группе Zabbix administrators, так что действие должно для меня сработать.
Теперь нужно настроить свой профиль (или профиль другого пользователя), чтобы включить возможность получения писем. Переходим в раздел User Settings, вкладка Media.
Ни одного Media типа нет. Нажимаем Add.
- Type: Email
- Send to: email-адрес, на который слать письма, может быть несколько.
- When active: время активности, дни недели и время, в которое можно отправлять сообщения
- Use if severity: какие типы сообщения (по степени важности) отправлять
- Enabled: ставим галку
Add.
Минимальные настройки для получения уведомлений на почту заданы.
Источник
Отправка email уведомлений в zabbix 2.4
После установки системы мониторинга и добавления узлов следует автоматизировать наблюдение за параметрами. Для этого мы включим и настроим в zabbix отправку email оповещений с авторизацией на smtp сервере yandex или gmail. Если этого не сделать, то никакой информации получить с мониторинга удаленно не получится, только через web интерфейс.
Введение
Поле установки сервер мониторинга Zabbix не настроен на отправку уведомлений о сработавших триггерах. Более того, штатный функционал по отправке оповещений на email не умеет авторизовываться на почтовом сервере. То есть вы сможете использовать эту возможность только если у вас есть свой собственный почтовый сервер, на котором вы разрешите заббиксу отправлять уведомления без авторизации.
Использовать в такой ситуации публичные сервера не получится. Это неудобно и не практично. Мне зачастую не хочется возиться с настройкой почтового сервера, гораздо удобнее и быстрее воспользоваться готовым. Этим мы и займемся далее — научим zabbix отправлять email уведомления с авторизацией на smtp сервере.
Настройка ssmtp для авторизации на почтовом сервере
Для отправки уведомлений на почту с помощью smtp авторизации нам понадобится почтовый клиент ssmtp. Установим его:
Если у вас еще не подключен репозиторий Epel, сделайте это. Пакет устанавливается оттуда. Теперь нужно настроить почтовый клиент на отправку писем через указанную учетную запись. Для этого открываем файл /etc/ssmtp/ssmtp.conf и приводим его к следующему виду для отправки через почтовый сервер Яндекса:
Если вы хотите использовать учетную запись gmail то настройки ssmtp должны быть следующие:
И редактируем там же файл revaliases, добавляя одну строку для яндекса:
Теперь проверим работу почтового клиента. Отправляем через консоль тестовое письмо:
Все в порядке, письмо улетело. Если что, логи работы почтового клиента можно посмотреть в файле /var/log/maillog.
Email script для отправки оповещений
Отправлять почтовые уведомления из zabbix будем с помощью скрипта. Первым делом выясним, где наш заббикс хранит скрипты для оповещений. Для этого открываем файл конфигурации и ищем там строку AlertScriptsPath:
Идем в указанную папку и создаем там скрипт отправки уведомлений на почту:
Не забудьте указать свой почтовый адрес и поле отправителя From. Сохраняем скрипт и делаем его исполняемым:
Настройка в Zabbix отправки уведомлений
Теперь идем в web интерфейс zabbix и настраиваем отправку оповещений на почту с smtp авторизацией. Для этого переходим в раздел Administration -> Media types и нажимаем на ссылку Email :
Заполняем необходимые параметры как на картинке:
Name | |
Type | Script |
Script name | mail.sh |
Сохраняем настройки, нажав Update. Дальше идем в раздел Administration -> Users. Меняем отображение с групп на пользователей:
Нажимаем на пользователя Admin и переходим на вкладку Media, там жмем на add . Откроется окно добавления источника оповещений. Заполняем как на картинке:
Нажимаем Update. Затем в разделе Media пользователя Admin еще раз жмем Update для применения настроек:
Теперь последний штрих, который лично я частенько забываю сделать, а потом долго разбираюсь, почему zabbix не отправляет оповещения на почту. Идем в раздел Configuration -> Actions и в единственной строке Report problems to Zabbix administrators жмем на Disabled в столбце статус, чтобы он стал Enabled :
Теперь все готово. Надо ждать срабатывания тригера и проверять почту. После срабатывания тригера и отправки заббиксом письма, в системном почтовом логе /var/log/maillog должны появиться записи об этом.
Проверка оповещений в Zabbix
Частенько возникают всякие нюансы в механизме отправки уведомлений в Zabbix. К сожалению, в самом заббиксе нет удобного средства мониторинга отправки уведомлений. И если возникают какие-то проблемы, не всегда бывает просто определить, где ошибка. Я рекомендую следующую последовательность действий при разборе ошибок отправки уведомлений zabbix с авторизацией по smtp. Без авторизации чаще всего все в порядке.
- Открываем dashboard и смотрим на сработавший триггер. В столбце Actions должны быть цифра 1, означающая, что уведомление было отправлено. При наведении мышки на эту цифру появится дополнительная информация.
- Затем идем в раздел Administration -> Notifications и смотрим на счетчик email уведомлений. Он должен увеличиваться при каждом новом срабатывании тригера.
- Если эти два условия выполняются, значит zabbix нормально отрабатывает событие отправки уведомления на почту. Если же нет, то нужно проверять настройки самого заббикса касательно отправки сообщений. Аккуратно проверить все разделы, которые имеют к этому отношения.
- Дальше нужно смотреть почтовый лог — /var/log/maillog. Там должны быть записи об отправке сообщения. Это будут либо успешные отправки, либо сообщения об ошибках. Если есть ошибки, то нужно разбираться с почтовым клиентом, в котором настроена авторизация smtp и скриптом отправки сообщений.
- Если все в порядке, а уведомления все равно не приходят, то можно попробовать сменить почтовый сервер. Идеальным был бы вариант почтового сервера, к логам которого у вас есть доступ. Так проще всего отладить работу, так как если в скрипте отправки есть какая-то ошибка, которую не видно на клиенте, ее можно заметить на сервере.
Заключение
Подведем итог того, что мы сделали. Нашей задачей была настройка уведомлений в zabbix о срабатываемых триггерах. Причем оповещения нам нам нужно было отправлять через сторонний smtp сервер с авторизацией. Так как стандартного средства авторизации smtp в zabbix нет, мы использовали ssmtp клиент для этих целей. Затем мы создали скрипт, с помощью которого заббикс будет отправлять уведомления, используя ssmtp.
После этого мы настроили через web интерфейс все необходимые параметры для успешной отправки оповещений. И в заключении провели диагностику возможных проблем.
Источник
Настраиваем уведомления из 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. Теперь можно заниматься настройкой, шлифовкой, дизайном и прочими неинтересными вещами.
0
1
На подкроватном сервере настроил zabbix сервер. Настроил уведомления на телеграмм.
Но столкнулся с проблемой что не работают Поддерживаемые макросы.
В способах уведомлений — телеграмм в поле To используется макрос {ALERT.SENDTO} который как я понимаю берет ID комнаты/пользователя из настройки оповещений пользователя. Но этот макрос не работает. ID не подхватывается и при тестировании отправки выводится ошибка «Sending failed: Bad Request: chat not found.»
Если же в способах уведомлений — телеграмм в поле To вбить ID пользователя то сообщение приходит. Но с текстом {ALERT.MESSAGE}. Тоесть как я понимаю не отрабатывает скрипт {ALERT.MESSAGE}.
В Узлы сети — test — Макросы — Макросы узла сети и унаследованные, таких макросов нет. Есть только макросы унаследованные от шаблонов которые я добавлял.
Правда я не уверен должны ли они там быть
Как я понял эти скрипты идут в поставке с заббиксом и их не нужно вручную прописывать. Подскажите где можно их найти и как проверить почему они не работают?
11 февраля 2023
378
4
Мониторинг
-
1.
Установка и настройка скрипта -
2.
Отправка графиков -
3.
Другие переменные скрипта
Zabbix — самая вменяемая система мониторинга всего, что возможно. Чтобы быстро реагировать на алерты электронная почта не очень подходит, да и почта не всегда может дойти. А телега для этого самое то.
Для отправки алертов в телегу долго использовал свой малюсенький скриптик на баше. Потом через какое-то время появилась встроенная поддержка в самом заббиксе, но по сути делает то же самое.
В некоторых случаях при алертах приходилось залезать в графану и смотреть на графики, чтобы лучше понять проблему. Мысль добавить графики приходила в голову, но как-то думал, что не особо то и нужно. Но оказалось, что многим нужна. Допилил скрипт для отправки еще и графиков + добавил всяких плюшек. Оказалось с графиками стало жить легче 🙂 Скрипт выложен на гитхабе. Дока там есть, но опишу все здесь попонятнее. Настройка будет идти на Debian 11 и Zabbix 6.0.
Установка и настройка скрипта
Для начала нужно установить зависимости:
Переходим в директорию с кастомными скриптами заббикса:
cd /usr/lib/zabbix/alertscripts
Качаем сам скрипт:
wget https://raw.githubusercontent.com/zevilz/zabbix-alertscript-telegram/main/telegram.sh
Сразу меняем права у скрипта, т.к. там будут важные данные, и делаем его исполняемым:
chmod 700 telegram.sh chown zabbix:zabbix telegram.sh
Чтобы скрипт мог отправлять в телегу, нужен бот. Зарегистрировать его можно у другого известного официального бота @BotFather. Процесс регистрации описывать не буду, там все просто. Нам для скрипта нужен будет только токен нового бота. Он будет выдан после регистрации бота. Копируем его, открываем скрипт в любом любимом редакторе, вставляем в значение переменной TELEGRAM_BOT_TOKEN полученный токен, сохраняем и выходим.
По дефолту ошибки скрипта будут писаться в /usr/lib/zabbix/alertscripts/zbx_tlg_bot.log
. Если лог нужно писать в другое место, то указываем этот путь в переменной SCRIPT_LOG_PATH
. Файл лога создается автоматически, если его нет. Если юзер zabbix
не сможет его создать, то получим ошибку при тесте отправки.
Не забываем перейти к чату с ботом и стартануть его. Если будете тестить в группе, то нужно добавить в нее бота и дать права на отправку сообщений.
Скрипт уже готов к отправке текстовых сообщений. Теперь нужно добавить новый способ оповещений в Zabbix. Для этого переходим Администрирование
-> Способы оповещений
и там вверху справа жмем на кнопку Создать способ оповещения
.
В окрывшемся окне указываем следующее:
- Имя —
Telegram
- Тип —
Скрипт
- Имя скрипта —
telegram.sh
В параметры скрипта добавляем:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
Во вкладке Шаблоны сообщений
добавляем нужные шаблоны. Сам текст шаблонов можно скопировать из существующих способов оповещений. Никакого дополнительного форматирования не нужно, просто текст. Дополнительно можно использовать Markdown и накидать смайликов 🙂 Далее тыкаем по кнопке Добавить
.
Шаблоны сообщений также можно задавать непосредственно в действиях триггеров. У них будет больший приоритет, и можно задавать разные шаблоны для разных случаев.
Теперь можно тестить отправку алертов. Для этого тыкаем по Тест
в строке с новым способом оповещения:
В открывшемся окошке указываем свой ID или ID группы телеги (его можно узнать у бота zGetMyID_bot) и жмем на кнопку Тест
. Если все ок, то получим такое уведомление:
А в телегу от бота придет это тестовое сообщение:
А если отправка провалится, то вы где-то накосячили. В уведомлении увидим ошибку, а если ее нет, то смотрим в лог скрипта.
Отправка графиков
Для отправки графиков нам нужен юзер, который будет иметь доступ к API и к графикам нужных хостов в веб-интерфейсе. Скрипт авторизуется в API, получает данные о графике, который привязан к элементу данных в триггере. Если график есть, то авторизуется уже в веб-интерфейсе и дергает сам график. Для этого можно заюзать существующего супер-админа, он имеет доступ ко всему. Но теоретическим не очень безопасно, т.к. его данные для входа будут прописаны в скрипте, а они при определенных обстоятельствах могут утечь. Можно создать для этого обычного юзера с необходимыми правами, но нужно будет ему еще давать права на хосты и группы хостов, что неудобно. Проще всего создать юзера с новой супер-админской ролью, где будут минимальные права и доступ в API только к нужному методу (graph.get
). Например, так:
С юзером определились. Теперь нужно определить необходимые переменные в скрипте:
GRAPHS
— включение отправки графиков, тут ставим1
;GRAPHS_DIR
— полный путь к директории, куда временно будут сохранятся графики (по дефолту пусто, а графики будут сохраняться в директорию
; директория для графиков создается автоматически, если её нет; если юзер/tmp/zbx_graphs
zabbix
не сможет её создать, то получим ошибку при тесте отправки);ZABBIX_URL
— полная ссылка к веб-интерфейсу заббикса (например:https://zabbix.site.com
);ZABBIX_USER
— юзер с доступами к графикам;ZABBIX_PASS
— пароль юзера;ZABBIX_COOKIES_LIFETIME
— время жизни куки авторизации в заббиксе (время жизни куки устанавливается на 14 дней, но они могут истечь раньше этого времени, а без авторизации не получится дергать графики; по дефолту стоит 30 секунд, т.е. переавторизация будет только при простое получения графиков более 30 сек; можно так и оставить);ZABBIX_COOKIES_PATH
— полный путь к файлу куки (по дефолту пусто, а куки будут писаться в директорию скрипта в файл/usr/lib/zabbix/alertscripts/zbx_cookies
; файл с куками создается автоматически, если его нет; если юзерzabbix
не сможет его создать, то получим ошибку при тесте отправки).
Для отправки графиков необходимо добавить вот такую строчку в любое место текста сообщения в нужных шаблонах сообщений (обычно это только тип Проблема
):
<graph:{ITEM.ID1}:1h:900:300>
Где:
{ITEM.ID1}
— родной макрос, куда попадает ID первого итема из выражения триггера;1h
— период, за который нужно получить график относительно текущего времени (может быть числом в секундах либо в относительных величинах:m
— минуты,h
— часы,d
— дни,w
— недели,M
— месяцы,y
— года);900
— кастомная ширина графика;300
— кастомная высота графика.
Ширина и высота необязательны. Если не указывать вообще или указать 0, то размеры будут те, которые указаны в настройках графика в веб-интерфейсе.
Для проверки отправки графиков необходимо вызвать срабатывание любого триггера, где для элемента данных создан график. К примеру, возьмем триггер перегруза CPU. Для этого нагрузим все ядра любого хоста, где активен этот триггер:
openssl speed -multi $(grep -ci processor /proc/cpuinfo)
Через какое-то время (в зависимости от порогов срабатывания триггера) получим алерт с графиком:
Также можно тестить отправку во встроенном тесте способа оповещени. Для этого добавим строку с данными графика в окошко теста ({ITEM.ID1}
нужно будет сменить на реальный ID итема, его можно взять из адресной строки из истории или страницы настройки этого итема) и тыкнуть по кнопке Тест
:
В результате получим тестовое сообщение с графиком:
Для временного отключения графиков не нужно удалять строку с данными графика из шаблона оповещений. Достаточно только установить значение переменной GRAPHS
в 0
. Эта строка удаляется из текста сообщения в любом случае.
Другие переменные скрипта
Во многих триггерах в описании триггера вывожу дополнительные данные и значения итемов в конце сообщения. Бывает полезно получать оперативные данные прямо в алерте. В некоторых шаблонах эти описания могут быть очень длинными (например, ошибки в логах веб-сервера), а у телеги есть ограничения по длине текста в обычных сообщениях (4096 символов) и подписям к изображениям (1024 символа).
Пробовал разбивать сообщения на несколько, но ломается markdown разметка, появляется мешанина из кучи сообщений (особенно если параллельно срабатывают несколько подобных триггеров), да и не особо бывает нужно видеть весь текст. В итоге просто сделал обрезку сообщений. Если сообщение длиньше установленных лимитов, то текст обрезается, а в конце добавляется многоточие.
Максимальная длина текстов задается в переменных скрипта:
TELEGRAM_MESSAGE_LIMIT
— макисмальная длина текстовых сообщений (по дефолту4000
);TELEGRAM_CAPTION_LIMIT
— максимальная длина подписей к графикам (по дефолту900
);
Для лучшего восприятия сообщений описание чаще всего в шаблонах запихиваю в блоки кода (тройной апостроф по краям):
Started: {EVENT.TIME} {EVENT.DATE} Severity: {EVENT.SEVERITY} Original problem ID: {EVENT.ID} ``` {TRIGGER.DESCRIPTION}```
Но при обрезке такого сообщения вместе с текстом обрежутся еще и закрывающие апострофы, а телега ругнется на такое сообщение и не отправит его. Для такого случая добавил переменную MONOSPACED_DESCRIPTION
. Если она включена (значение 1
), а очень длинное описание запихнуто в блок кода, то скрипт обрежет текст и корректно завершит блок кода.