Какой модуль в Spring позволяет наблюдать за приложением
Что проверяют
Знаете ли вы Spring Boot Actuator не по названию, а по тому, как он живёт в продакшене: какие эндпоинты открыты, куда уходят метрики, как это связано с Kubernetes. Следом обычно спрашивают про безопасность эндпоинтов и про трейсинг.
Как отвечать
Модуль называется Spring Boot Actuator, подключается стартером spring-boot-starter-actuator. Он публикует эндпоинты под /actuator и связывает приложение с Micrometer, который собирает метрики.
health: состояние приложения и зависимостей черезHealthIndicator. Для Kubernetes есть группы/actuator/health/livenessи/actuator/health/readiness;metricsиprometheus: метрики JVM, пула соединений, HTTP-запросов. Для Prometheus нужна зависимостьmicrometer-registry-prometheus;info: версия сборки и коммит, если подключитьbuild-infoи git-свойства;loggers: смена уровня логирования на лету, без рестарта;env,threaddump,heapdump: диагностика, которую наружу не открывают.
По умолчанию по HTTP открыт только health, остальное включается через management.endpoints.web.exposure.include. Детали здоровья скрыты: management.endpoint.health.show-details по умолчанию never. Управляющие эндпоинты часто выносят на отдельный порт через management.server.port.
В Spring Boot 3 наблюдаемость построена на Micrometer Observation API: одна Observation даёт и метрику, и спан. Трейсинг идёт через Micrometer Tracing с мостом к OpenTelemetry или Brave, Spring Cloud Sleuth с третьей версией не работает.
Где спотыкаются
Открывают include=* на публичном порту. Через heapdump и env можно вытащить пароли и токены, это реальный путь утечки.
Кладут проверку базы в liveness. База моргнула, Kubernetes перезапускает все поды разом, и мелкий сбой превращается в падение сервиса. Внешние зависимости относятся к readiness.
Называют Sleuth текущим инструментом трейсинга и думают, что Actuator сам хранит метрики. Он их только отдаёт, хранит и строит графики Prometheus или другая система.