Комментарии 6
Вроде как traceId передается в HTTP заголовке, и если его нет то вы и получите два трейса. Отсюда решение - проверить что этот заголовок передается.
Что очень беспокоит, как много шагов нужно сделать, чтобы это включить. Статья такая толстая, что тянет на докторскую. Было бы круто иметь какой-то стартер, который бы с помощью AOP бегал по типично сконфигурированному приложению и добавлял всё, что нужно. Чтобы ты мог из Initializr сгенерить проект, прописать где-нибудь шаблон для названия traceId, и оно всё сразу заработало. Может быть, что-то такое уже есть?
traceId можно передавать между сервисами через заголовок traceparent
https://www.w3.org/TR/trace-context/#traceparent-header
а если нужно попроще (и если сервисов много разных - soap, rest, grpc, kafka, webflux и т.д.), то вместо micrometer можно использовать opentelemetry-javaagent.jar https://opentelemetry.io/docs/instrumentation/java/automatic/
А теперь лучше сразу запланируйте переход на jaeger/opentelemetry :)
Крутая статья, крутая работа.
Трейсы в Spring Boot 3 с использованием Zipkin и Kafka в качестве транспорта