Какие минимальные метрики нужны для мониторинга приложения 24/7
Что проверяют
Умеете ли вы отобрать короткий набор сигналов, по которым дежурный за минуту поймёт, что сервису плохо, а не перечислить всё, что умеет Grafana. Следом спрашивают, на какие метрики вы повесите алерты и как соберёте их в Spring Boot.
Как отвечать
Опорная рамка: четыре «золотых сигнала» из книги Google по SRE, для запросов это почти то же, что метод RED:
- трафик: запросы в секунду по эндпоинтам, сообщения в секунду для консьюмеров Kafka;
- ошибки: доля ответов 5xx и исключений от общего числа. Считают долю, а не штуки, иначе ночью алерт молчит, а днём шумит;
- задержка: перцентили p95 и p99, а не среднее. Среднее прячет хвост, в котором и живут жалобы;
- насыщенность: насколько ресурсы близки к пределу.
Для Java к насыщенности добавляется своё:
- JVM: занятость heap после сборки, длительность и частота пауз GC, число живых потоков;
- пулы: активные и ожидающие соединения HikariCP, очередь пула потоков Tomcat, consumer lag у Kafka;
- контейнер: CPU с троттлингом в Kubernetes, память против лимита (OOMKilled), место на диске.
Отдельно нужна проверка снаружи: синтетический запрос к /actuator/health с внешнего узла, потому что упавший сервис сам о себе не отчитается.
Сбор: spring-boot-starter-actuator плюс micrometer-registry-prometheus, эндпоинт /actuator/prometheus, дальше Prometheus и Grafana. Метрики http.server.requests, jvm.memory.used, jvm.gc.pause, hikaricp.connections.pending появляются без кода. Гистограммы для перцентилей включаются настройкой management.metrics.distribution.percentiles-histogram.http.server.requests=true.
Где спотыкаются
Алертят на CPU и память вместо симптомов. Высокий CPU при нормальных задержках не повод будить человека, а рост p99 и доли ошибок повод.
Смотрят на среднее время ответа. Если 1% запросов идёт по 10 секунд, среднее почти не сдвинется, а пользователи уже уходят.
Забывают про зависимости. Сервис жив, но пул соединений к базе исчерпан, и запросы висят в ожидании: без метрик пула это выглядит как загадочные таймауты.