4 Вебхук

Обзор

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

Интеграции

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

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

Настройка

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

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

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

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

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

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

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

Параметр Описание
Параметры Укажите переменные вебхук в виде пар атрибутов и значений.
По уже предварительно добавленным вебхукам список параметров зависит от сервиса. Для информации о параметрах проверьте файл Readme.md вебхука.
По новым вебхукам некоторые переменные включены по умолчанию (URL: <пусто>, HTTPProxy: <пусто>, Кому: {ALERT.SENDTO}, Тема: {ALERT.SUBJECT}, Сообщение: { ALERT.MESSAGE}), вы можете сохранить их или удалить.
В параметрах вебхуков поддерживаются пользовательские макросы, все макросы, которые поддерживаются в оповещениях о проблемах, а также макросы {ALERT.SENDTO}, {ALERT.SUBJECT} и {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} в изначальном сообщении о проблеме и в сообщениях о восстановлении, потому что скрипт еще не успел запуститься.

Смотрите также: Руководство по разработке вебхук, Примеры скриптов вебхук, Дополнительные объекты 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.<имя тега>}.
Это поле является обязательным, только если выбрана опция Добавить пункт в меню события.

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

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

Проверка способа оповещения

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

  • Найдите соответствующий вебхук в списке способов оповещений.
  • Нажмите Тест в последней колонке (отроется окно проверки).
  • Измените параметры вебхука, если необходимо.
  • Нажмите Тест.

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

Чтобы посмотреть записи в журнале, относящиеся к проверке способа оповещения, не закрывая окно проверки, нажмите Открыть журнал (он будет открыт в новом окне).

Если проверка вебхука успешна:

  • Появится сообщение "Успешное тестирование способа оповещения."
  • В сером поле Ответ отображается ответ сервера
  • Под полем Ответ указывается тип ответа (JSON или "Строка")

Если проверка вебхука неуспешна:

  • Отображается сообщение "Ошибка при тестировании способа оповещения." с указанием дополнительных сведений.

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

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

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

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

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

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

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

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