Как мониторить сервисы на продакшене и какие механизмы оповещения использовать
Что проверяют
Есть ли у вас опыт реального дежурства: знаете ли вы, какие сигналы снимать с Java-сервиса и как не утонуть в ложных тревогах. Следом обычно спрашивают, на что вы поставили бы алерт в первую очередь и что делает человек, которого разбудили ночью.
Как отвечать
Стройте ответ на трёх опорах наблюдаемости и отдельно на оповещениях:
- метрики: в Spring Boot это Actuator плюс Micrometer, Prometheus забирает
/actuator/prometheus, дашборды в Grafana. Для сервиса снимаете частоту запросов, долю ошибок и задержку перцентилями p95 и p99, а не средним. Для JVM: заполнение heap, паузы GC, число потоков, занятость пула соединений HikariCP; - логи: структурированные, в JSON, с
traceIdв MDC, чтобы по одной строке найти весь запрос. Собирают их в Loki или Elasticsearch. В Spring Boot 3.4 и новее формат задаётся свойствомlogging.structured.format.console; - трассировка: OpenTelemetry (агент или Micrometer Tracing), хранилище Jaeger или Tempo. OpenTracing и Spring Cloud Sleuth устарели, называть их текущим выбором не стоит;
- health-проверки:
/actuator/health/livenessи/actuator/health/readinessдля Kubernetes, чтобы зависший под перезапускался, а трафик не шёл в неготовый.
Оповещения: правила в Prometheus с условием for: 5m, чтобы не звенеть от единичного всплеска, дальше Alertmanager группирует, подавляет дубли и маршрутизирует по важности. Критичное уходит дежурному со звонком, остальное в чат команды. Алертить лучше на симптомы, которые чувствует пользователь (рост ошибок, быстрое сгорание бюджета ошибок по SLO), а не на каждый скачок CPU. К каждому алерту прикладывайте ссылку на ранбук.
Где спотыкаются
Перечисляют инструменты без сигналов. «У нас Prometheus и Grafana» не отвечает на вопрос, что именно вы измеряете и при каком пороге кого-то будят.
Смотрят на среднее время ответа. Оно прячет хвост: при хорошем среднем пять процентов пользователей могут ждать секунды.
Заводят алерты на всё подряд. Через неделю дежурный перестаёт на них реагировать, и настоящий инцидент тонет в шуме.