Actuator Observability

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

Actuator и наблюдаемость в Spring Boot — это совместное использование Spring Boot Actuator, Micrometer и инструментов распределённой трассировки для получения, сбора и визуализации внутреннего состояния работающих приложений. Spring Boot автоматически настраивает бин MeterRegistry, который отправляет метрики в такие бэкенды, как Prometheus, Datadog или InfluxDB, что позволяет строить насыщенные дашборды в Grafana для любого Spring Boot-сервиса. Эндпоинт /actuator/metrics раскрывает данные о памяти JVM, количестве HTTP-запросов, статистике пула соединений с БД и пользовательских метриках, зарегистрированных через MeterRegistry.counter() или аннотацию @Timed. Распределённая трассировка через Micrometer Tracing (на базе Zipkin или Jaeger) распространяет traceid и spanid между Spring Boot-микросервисами, благодаря чему полные пути запросов можно восстановить в интерфейсе трассировки. Вместе Actuator и наблюдаемость формируют основу надёжной эксплуатации Spring Boot-приложений в средах Kubernetes и Docker.

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

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

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

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