3 Пользовательские скрипты оповещений

Обзор

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

Пользовательские скрипты оповещений выполняются на стороне Zabbix сервера. Эти скрипты должны быть размещены в директории, которая указывается в параметре AlertScriptsPath в файле конфигурации сервера.

Пример пользовательского скрипта оповещения:

#!/bin/bash
       
       to=$1
       subject=$2
       body=$3
       host=$4
       value=$5
       
       cat <<EOF | mail -s "$subject" "$to"
       $body
       
       Host: $host
       Value: $value
       EOF

Начиная с версии 3.4, Zabbix проверяет код выхода выполненной команды и скриптов. Любой код отличный от 0 рассматривается как ошибка выполнения команды. В этом случае Zabbix попытается снова выполнить команду, которая завершилась с ошибкой.

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

Настройка

Для настройки пользовательского скрипта оповещения способом оповещений:

  1. Перейдите в Оповещения → Способы оповещений.
  2. Нажмите Создать способ оповещения.

Вкладка Способ оповещения содержит общие атрибуты способа оповещения:

Все обязательные поля ввода отмечены красной звёздочкой.

Следующие параметры уникальны для способов оповещений на основе скриптов:

Параметр Описание
Имя скрипта Введите имя файла, содержащего скрипт (напр, notification.sh), который расположен в директории, указанной в параметре AlertScriptsPath файла конфигурации сервера .
Параметры скрипта Добавьте к скрипту необязательные параметры командной строки, которые будут переданы в заданном порядке.

В параметрах скриптов поддерживаются макросы {ALERT.SENDTO}, {ALERT.SUBJECT} и {ALERT.MESSAGE}, а начиная с Zabbix 6.4.0 - все макросы, поддерживаемые в оповещениях, а также пользовательские макросы.

Смотрите также общие параметры способов оповещений для получения подробной информации о настройке сообщений по умолчанию и опциях обработки оповещений.

Даже если скрипт оповещения не использует сообщения по умолчанию, все же необходимо задать шаблоны сообщений по типам операций, которые используются в скрипте, в противном случае оповещение не будет отправлено.

При наличии более одного способа оповещения с типом скрипт, эти скрипты могут обрабатываться процессами оповещения параллельно. Общее количество процессов оповещения ограничено параметром StartAlerters в файле конфигурации сервера.

Проверка способа оповещения

Чтобы проверить заданные настройки способа оповещения посредством скрипта:

  1. Найдите соответствующий скрипт в списке способов оповещений.

  2. Нажмите Тест в последней колонке (отроется окно проверки). Количество параметров в окне проверки будет соответствовать заданному для скрипта.

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

  4. Нажмите Тест.

При проверке настроенного скрипта макросы {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} и пользовательские макросы раскроются, а макросы, относящиеся к событиям (напр., {HOST.HOST}, {ITEM.LASTVALUE} и т.д.), не раскроются, поскольку при тестировании нет связанных событий, которые предоставляли бы нужные сведения. Учтите, что макросы внутри макросов {ALERT.SUBJECT} и {ALERT.MESSAGE} также не раскроются. Например, если значение {ALERT.SUBJECT} состоит из "Проблема: {EVENT.NAME}", макрос {EVENT.NAME} не раскроется.

Оповещение пользователей

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

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