Подключение через webhook

Принимайте алерты из любой системы, которая умеет отправлять HTTP POST с JSON.

Интеграция типа Generic Webhook принимает алерты от любого источника, который умеет отправлять HTTP POST с JSON. Создайте её как описано в обзоре интеграций и отправляйте запросы на адрес /webhook:

POST https://api.incidentgarden.ru/api/v1/integrations/<API_KEY>/webhook
{ "title": "Disk space low on db-01" }

Обязательно только поле title. Остальные поля (description, source, status, dedup_key, labels, annotations) описаны в статье Формат payload. В status отправляйте точные значения firing и resolved, а значения labels и annotations приводите к строкам на своей стороне (500 и "500" для системы разные вещи).

Дедупликация

Повторные события об одной проблеме сводятся в один алерт. Ключ выбирается так: dedup_key, если он есть; иначе набор labels целиком; иначе title. Присылайте одно из двух:

  1. dedup_key — стабильный идентификатор проблемы у источника. Он должен совпадать у события открытия и закрытия, тогда resolved закроет открытый алерт.
  2. Различающие labels — хост, сервис, имя проверки. Набора {"severity": "critical"} мало, он одинаков у множества событий.

Без dedup_key и различающих labels вторая проблема потеряется. «Disk space low» с двух серверов станет одним алертом и о втором сервере никого не оповестят. Если заголовки в вашем потоке не уникальны, dedup_key обязателен.

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

Важность

По умолчанию все алерты получают critical. Чтобы брать важность из тела, задайте в маппинге важности Source field, например labels.severity, и перечислите значения в Critical values и Warning values:

{
  "title": "Disk space low on db-01",
  "labels": { "severity": "warning" }
}

Лейблы и политики

По labels работают условия политик и сайленсов. Присылайте те лейблы, на которые опираются условия. Отсутствующий лейбл совпадёт с matcher'ами «не равно» и «отсутствует».

На этой странице