Подключение через webhook
Принимайте алерты из любой системы, которая умеет отправлять HTTP POST с JSON.
Интеграция типа Generic Webhook принимает алерты от любого источника, который
умеет отправлять HTTP POST с JSON. Создайте её как описано в обзоре
интеграций и отправляйте запросы на адрес /webhook:
Обязательно только поле title. Остальные поля (description, source,
status, dedup_key, labels, annotations) описаны в статье Формат
payload. В status отправляйте точные
значения firing и resolved, а значения labels и annotations приводите к
строкам на своей стороне (500 и "500" для системы разные вещи).
Дедупликация
Повторные события об одной проблеме сводятся в один алерт. Ключ выбирается так:
dedup_key, если он есть; иначе набор labels целиком; иначе title.
Присылайте одно из двух:
dedup_key— стабильный идентификатор проблемы у источника. Он должен совпадать у события открытия и закрытия, тогдаresolvedзакроет открытый алерт.- Различающие
labels— хост, сервис, имя проверки. Набора{"severity": "critical"}мало, он одинаков у множества событий.
Без dedup_key и различающих labels вторая проблема потеряется. «Disk
space low» с двух серверов станет одним алертом и о втором сервере никого не
оповестят. Если заголовки в вашем потоке не уникальны, dedup_key обязателен.
labels запоминаются первым событием и повторами не
переписываются, а annotations
обновляются каждым повтором. Поэтому меняющиеся значения, например текущее
значение метрики или номер попытки, отправляйте в annotations.
Важность
По умолчанию все алерты получают critical. Чтобы брать важность из тела,
задайте в маппинге важности Source
field, например labels.severity, и перечислите значения в Critical values
и Warning values:
Лейблы и политики
По labels работают условия политик и сайленсов. Присылайте
те лейблы, на которые опираются условия. Отсутствующий лейбл совпадёт с
matcher'ами «не равно» и «отсутствует».