Как устроены алерты
Что проверяют
Понимаете ли вы цепочку от метрики в коде до сообщения дежурному и умеете ли отличить полезный алерт от шума. Следом обычно спрашивают, на что вы бы поставили алерты у своего сервиса и как не будить людей ночью из-за ложных срабатываний.
Как отвечать
Опишите типичную связку для Go-сервисов:
- метрики в приложении: пакет
github.com/prometheus/client_golangрегистрирует счётчики, гистограммы и gauge, аpromhttp.Handler()отдаёт их на/metrics. Рантайм Go добавляет свои метрики: число горутин, паузы GC, память; - правила в Prometheus: каждое правило это выражение PromQL, длительность
for, метки и аннотации. Алерт проходит состояния inactive, pending и firing: пока условие держится меньшеfor, он висит в pending и никого не будит; - Alertmanager: принимает сработавшие алерты, группирует их (
group_by,group_wait,group_interval), повторяет раз вrepeat_interval, глушит производные через inhibit-правила, позволяет выставить silence на время работ и маршрутизирует по получателям: Telegram, почта, вебхук, система дежурств.
Та же схема есть в Grafana Alerting, а ошибки в коде удобно ловить Sentry.
Дальше покажите, что умеете выбирать, на что алертить. Будить человека стоит по симптомам, которые чувствует пользователь: доля ответов 5xx, латентность p99 через histogram_quantile по бакетам гистограммы, скорость расхода бюджета ошибок SLO. Высокий CPU или рост числа горутин лучше отправлять на дашборд или в тикет. У каждого алерта должен быть владелец, уровень важности и ссылка на runbook с первыми шагами.
Отдельно нужен алерт на отсутствие данных: up == 0 или absent(). Упавший сервис перестаёт отдавать метрики, и правило на рост ошибок просто молчит.
Где спотыкаются
Ставят алерт без for на порог вроде «CPU больше 80%». Он срабатывает на каждом кратком всплеске, и через неделю команда перестаёт на него реагировать.
Кладут в метки user_id или полный URL с параметрами. Кардинальность взлетает, и Prometheus тратит память на миллионы временных рядов.
Смотрят на среднее время ответа вместо перцентилей. Среднее прячет медленный хвост, на который как раз жалуются пользователи.