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

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

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

Настройка

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

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

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

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

Для типа носителя «Скрипт» доступны следующие параметры:

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

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

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

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

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

Тестирование

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

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

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

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

  4. Нажмите Тест (Test).

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

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

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

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