Micrometer Tracing

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

Распределённая трассировка в Spring — это практика распространения уникального идентификатора трассировки через все Spring Boot-микросервисы, участвующие в обработке одного пользовательского запроса, что позволяет проводить сквозной анализ задержек и диагностику первопричин в распределённых системах. Начиная с Spring Boot 3, распределённая трассировка построена на Micrometer Tracing, предоставляющем вендор-нейтральный API с реализациями-мостами для OpenTelemetry и Brave (библиотека инструментирования Zipkin). Добавление spring-boot-starter-actuator и io.micrometer:micrometer-tracing-bridge-otel в Spring Boot-приложение автоматически настраивает распространение контекста трассировки через заголовки W3C TraceContext, а io.opentelemetry:opentelemetry-exporter-zipkin отправляет спаны в коллектор Zipkin или Jaeger. Распределённая трассировка в Spring автоматически инструментирует HTTP-вызовы через @RestController, запросы WebClient, продюсеры и консьюмеры Spring Kafka и запросы Spring Data JPA, фиксируя данные спанов без ручной инструментации в большинстве случаев. Частота сэмплирования управляется через management.tracing.sampling.probability в application.properties, а собранные данные трассировки можно визуализировать в Grafana Tempo, интерфейсе Zipkin или Jaeger наряду с метриками Prometheus и данными о состоянии Spring Boot Actuator.

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

Micrometer Tracing (Spring Cloud): Spring Cloud Config Server централизует конфигурацию с Git-backend + per-service refresh. Service Discovery (Eureka) был каноничным вариантом; в 2026 Kubernetes-native discovery (DNS + Services) более распространён. Spring Cloud Gateway — современный API gateway (заменяет Zuul). Resilience4j добавляет circuit breakers, retries, bulkheads, rate limits. Micrometer Tracing (заменяет Sleuth) для distributed tracing (B3 / W3C Trace Context, OpenTelemetry export).

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

На Kubernetes предпочитайте K8s-native primitives (Services, ConfigMaps, Secrets, Istio/Linkerd) перед Spring Cloud эквивалентами — меньше поддержки. Spring Cloud Config полезен для не-K8s env или как Git-backed config single source. Всегда оборачивайте внешние вызовы в circuit breakers в production. Trace IDs через каждый service-вызов — иначе debug distributed-багов безнадёжен.

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

Ловушки Micrometer Tracing: Eureka + K8s Services (дублированный discovery, оба сломаны); circuit breakers misconfigured (fail-open прячет outage); нет distributed tracing (не отладить 5-service запрос); Spring Cloud Gateway для всего (есть scaling-ограничения — proper API gateways как Kong, Envoy, Cloudflare лучше подходят).

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

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