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. Нажмите Создать способ оповещения.

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

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

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

Parameter Description
Script name Введите имя файла скрипта (например, notification.sh), расположенного в каталоге, указанном в параметре конфигурации сервера AlertScriptsPath.
Script parameters Добавьте необязательные параметры скрипта, которые будут переданы скрипту как аргументы командной строки в том порядке, в котором они определены.

Параметры скрипта поддерживают макросы {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} состоит из "Problem: {EVENT.NAME}", то макрос {EVENT.NAME} подставлен не будет.

Способ оповещения пользователя

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

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