Подключение AlertManager
Как настроить приём алертов из Prometheus AlertManager.
Интеграция
Создайте интеграцию типа Alertmanager, как описано в обзоре
интеграций, и сохраните её API key. Пресет важности берёт
уровень из лейбла severity, так что для начала его можно не менять.
Конфигурация AlertManager
Добавьте в alertmanager.yml получатель (receiver), заменив <API_KEY> своим
ключом:
Затем направьте на receiver incidentgarden нужные маршруты (routes).
При включенном send_resolved Prometheus будет отправлять закрывающее событие в Incident Garden,
когда алерт закроется.
Как обрабатывается батч
Один батч AlertManager превращается в один алерт. Открывает и закрывает его
только верхнеуровневый status батча. alerts[].status отдельных элементов
на это не влияет. Полный формат тела описан в статье Формат
payload.
Что решает group_by
Параметр group_by в маршруте alertmanager.yml определяет, какие срабатывания
Prometheus поедут одним батчем и какие лейблы у батча окажутся общими.
От group_by зависит, сколько алертов увидит дежурный.
- Слишком широкий (скажем, только
alertname) склеит независимые проблемы в один алерт: у него растёт счётчик повторов, но второго оповещения не будет. - Слишком узкий (вплоть до
instanceилиpod) сделает каждое срабатывание отдельным алертом со своей эскалацией и один сбой обернётся потоком звонков.
Два лейбла требуют особого внимания:
alertnameдаёт алерту заголовок. Берётся он изgroupLabels, а если там его нет, из общих лейблов батча, то есть только когдаalertnameсовпал у всех срабатываний группы. Иначе алерт получит заголовокUnnamed Alert. Если в общих аннотациях естьsummary, в списке и уведомлениях показывается именно она.severityопределяет важность, которая считается по общим лейблам батча. Если в группу попали срабатывания разной важности, то общегоseverityне будет и алерт получит важность по умолчанию (во всех пресетахcritical).
Качество алертов закладывается ещё в Prometheus, поэтому загляните в антипаттерны Алерты без агрегации в PromQL и Описание алерта как диагностический отчёт.