4 Вебхук

Обзор

Этот способ оповещений полезен для выполнения вызовов HTTP с использованием пользовательского кода JavaScript для прямой интеграции с внешними системами, такими как системы поддержки, чаты или мессенджеры. Вы можете импортировать интеграции, поставляемые Zabbix, или создать свою собственную интеграцию с нуля.

Интеграции

Доступны следующие интеграции, которые позволяют использовать подготовленные способы оповещения вебхук для отправки оповещений из Zabbix на:

В дополнение к перечисленным здесь сервисам, Zabbix можно интегрировать с Spiceworks (вебхук не требуется). Чтобы преобразовать оповещения Zabbix в тикеты Spiceworks, используйте тип оповещений e-mail способ оповещения и введите e-mail адрес службы поддержки Spiceworks (например, [email protected]) в настройках выделенного под Spiceworks пользователя Zabbix.

Настройка

Чтобы начать использовать интеграцию вебхук:

  1. Найдите нужный .xml файл в директории templates/media загруженной версии Zabbix или загрузите его из git репозитория Zabbix.
  2. Импортируйте файл в вашу инсталляцию Zabbix. Вебхук появится в списке способов оповещений.
  3. Настройте вебхук согласно инструкциям в файле Readme.md (для быстрого доступа к Readme.md вы можете нажать на имя вебхука).

Чтобы создать пользовательский вебхук с нуля:

  • Перейдите в Администрирование → Способы оповещений
  • Нажмите Создать способ оповещений

Вкладка Способ оповещений содержит различные уникальные атрибуты по этому способу оповещений:

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

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

Параметр Описание
Параметры Укажите переменные вебхук в виде пар атрибутов и значений.
По уже предварительно добавленным вебхукам список параметров зависит от сервиса. Для информации о параметрах проверьте файл Readme.md вебхука.
По новым вебхукам некоторые переменные включены по умолчанию (URL: <пусто>, HTTPProxy: <пусто>, To: {ALERT.SENDTO}, Subject: {ALERT.SUBJECT}, Message: { ALERT.MESSAGE}), вы можете сохранить их или удалить.
Все макросы, которые поддерживаются в оповещениях на проблемы, поддерживаются в параметрах.
Если вы указываете прокси-сервер HTTP, поле поддерживает те же функции, что поле HTTP прокси настройки элемента данных. Строка прокси может иметь префикс [схема]://, чтобы можно было указать, какой тип прокси будет использоваться (например, https, socks4, socks5; смотрите документацию).
Скрипт Введите код JavaScript в блоке, который появляется при нажатии на поле параметра (или на кнопку просмотра / изменения сразу после него). Этот код, собственно, и будет производить работу вебхука.
Скрипт - код функции, который принимает пары "параметр - значение". Значения должны быть преобразованы в объекты JSON, используя метод JSON.parse(), например: var params = JSON.parse(value);.

Этот код имеет доступ ко всем параметрам, он может выполнять запросы HTTP GET, POST, PUT и DELETE и управлять заголовками HTTP и телом запроса.
Скрипт должен содержать оператор возврата (return), в противном случае он не будет корректным. Код может возвращать состояние OK вместе с необязательным списком тегов и их значений (смотрите опцию Обработка тегов ) или строку с ошибкой.

Обратите внимание, что скрипт выполняется только после создания оповещения. Если скрипт настроен на возврат и обработку тегов, эти теги не будут раскрыты в макросах {EVENT.TAGS} и {EVENT.RECOVERY.TAGS} при начальном сообщении о проблеме и в сообщениях о восстановлении, потому что скрипт еще не успел запуститься.

Смотрите также: Руководство по разработке вебхуков [en], Примеры скриптов вебхук, Дополнительные объекты JavaScript.
Время ожидания Время ожидания выполнения JavaScript (1-60с, по умолчанию 30с).
Поддерживаются суффиксы времени, например, 30s, 1m.
Обработка тегов Отметьте для обработки возвращаемых значений свойств JSON в виде тегов. Эти теги добавляются к уже существующим (если имеются) тегам событий о проблемах в Zabbix.
Если вебхук использует теги (опция Обработка тегов отмечена), вебхук всегда должен возвращать JSON объект, содержащий по крайней мере пустой объект тегов:var result = {tags: {}};.
Примеры тегов, которые можно вернуть: Jira ID: PROD-1234, Responsible: John Smith, Processed:<no value> и т.д.
Добавить запись в меню события Отметьте, чтобы в меню события добавить запись, связывающую с созданной внешней задачей (тикетом).
Если отмечено, вебхук не должен использоваться для отправки оповещений разным пользователям (вместо этого рассмотрите возможность создания выделенного пользователя) или в нескольких действиях оповещений, которые связаны с одним событием о проблеме.
Имя записи в меню Укажите название пункта меню.
Поддерживаются макросы {EVENT.TAGS.<имя тега>}.
Это поле является обязательным, только если выбрана опция Добавить запись в меню события.
URL записи в меню Укажите основной URL адрес пункта меню.
Поддерживаются макросы {EVENT.TAGS.<имя тега>}.
Это поле является обязательным, только если выбрана опция Добавить запись в меню события.

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

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

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

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

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

  1. После настройки способа оповещения вебхук, перейдите в раздел Администрирование → Пользователи и создайте выделенного пользователя Zabbix для вебхука - например, с именем пользователя Slack для вебхука Slack. Все настройки, за исключением способа оповещения, можно оставить по умолчанию, так как этот пользователь не будет входить в Zabbix.
  2. В профиле пользователя перейдите на вкладку Оповещения и добавьте вебхук с необходимой контактной информацией. Если вебхук не использует поле Отправлять на, введите любую комбинацию поддерживаемых символов для обхода требования наличия адресата.
  3. Предоставьте этому пользователю по крайней мере права чтения ко всем узлам сети, по которым ему нужно отправлять оповещения.

При настройке действия на оповещение добавьте этого пользователя в поле Отправка пользователям в деталях Операции - это укажет Zabbix использовать вебхук для оповещений с этого действия.

Настройка действий на оповещения

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

  • Если вебхук использует теги для хранения идентификатора задачи (тикета) \ сообщения и отслеживает операции обновления\восстановления, этот вебхук не следует использовать в нескольких действиях на оповещения по одной и той же проблеме. Если {EVENT.TAGS.<имя>} уже существует, и он будет обновлен в вебхуке, то его окончательное значение будет не определено. Для такого случая в вебхуке необходимо использовать новое имя тега для хранения обновленных значений. Это поведение применимо к вебхукам Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad и Zendesk, которые поставляются Zabbix, и к большинству вебхуков, которые используют опцию Добавить запись в меню события. Использование вебхука в нескольких операциях допустимо, если эти операции или шаги эскалации принадлежат одному действию. Также можно использовать этот вебхук в разных действиях, если эти действия не применяются к одному событию проблемы из-за разных условий фильтра.
  • При использовании вебхука в действиях на внутренние события: в настройках операций действия проверьте опцию Пользовательское сообщение и укажите пользовательское сообщение, в противном случае оповещение не будет отправлено.