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

Обзор

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

Пользовательские скрипты оповещений выполняются на сервере 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. Нажмите Создать тип носителя.
  3. Введите параметры типа носителя «Скрипт» в форме.

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

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

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

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

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

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

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

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

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

Чтобы протестировать настроенный тип медиа-элемента script:

  1. Найдите нужный script в списке типов медиа-элементов.

  2. Нажмите Test в последнем столбце списка; в всплывающем окне откроется форма тестирования. Форма тестирования будет содержать такое же количество параметров, которое настроено для типа медиа-элемента script.

  3. При необходимости измените значения параметров script. Изменение влияет только на процедуру тестирования; фактические значения изменены не будут.

  4. Нажмите Test.

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

Пользовательские способы оповещения

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

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