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

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

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

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

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

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

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

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

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

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

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