Проверка состояния

Тема дорожной карты · Spring Boot

Проверки работоспособности и liveness-пробы в Spring Boot предоставляются «из коробки» через spring-boot-starter-actuator, который раскрывает эндпоинт /actuator/health, агрегирующий статус всех зарегистрированных бинов HealthIndicator — включая доступность базы данных, доступность брокера Kafka, пинг Redis и свободное место на диске. Spring Boot 2.3 ввёл выделенные группы: /actuator/health/liveness сообщает о том, живёт ли процесс приложения (соответствует livenessProbe Kubernetes), а /actuator/health/readiness — о готовности обслуживать трафик (соответствует readinessProbe Kubernetes), включаемые через management.endpoint.health.probes.enabled=true. Пользовательские проверки работоспособности добавляются реализацией интерфейса HealthIndicator и аннотированием класса @Component; методы-строители Health.up(), Health.down() и Health.outOfService() передают детальный статус с необязательными парами ключ-значение. Блоки livenessProbe и readinessProbe Kubernetes в манифесте Deployment ссылаются на эти эндпоинты с подходящими значениями initialDelaySeconds, periodSeconds и failureThreshold, чтобы дать Spring Boot время на завершение запуска. Предоставление проверок работоспособности через отдельный management-порт (management.server.port=9090) — изолированный от порта приложения — повышает безопасность, предотвращая внешний доступ к деталям состояния без ущерба для поведения liveness.

Как это работает

Проверка состояния: Spring Boot Actuator экспонирует operational endpoints (/actuator/health, /info, /metrics, /prometheus, /env, /loggers). Health checks (liveness + readiness probes для K8s). Metrics через Micrometer (vendor-neutral metrics facade) → Prometheus, Datadog и т.п. Logging через Logback (дефолт) с JSON output для production (Logstash encoder); structured logging делает log aggregation реально полезным. Сочетайте с Micrometer Tracing для traces, OpenTelemetry SDK для полного o11y-сигнала.

Когда применять

Всегда включайте Actuator + Prometheus scraping + structured JSON logs в prod. Раздельные liveness/readiness probes — liveness рестартует залипший pod, readiness роутит трафик только когда ready. Тэгируйте метрики консистентно (service, version, env) — спасает от dashboard хаоса. Ограничивайте exposed-наружу endpoints; защищайте их.

Типичные ошибки

Ловушки Проверка состояния: публично выставленный /actuator/env (показывает env vars включая секреты); только liveness-probe (трафик роутится в not-ready pods); plain-text logs в prod (нефильтрабельно на масштабе); нет конвенции имён метрик (каждая команда изобретает свою).

Связанные понятия

Полезные ресурсы