迁移到Spring Boot 3后,TraceId和SpanId不可用

9

将spring boot从2.x版本迁移到3后,我们的日志中缺少了traceId和spanId。

我们已经移除了所有sleuth依赖并添加了

implementation 'io.micrometer:micrometer-core'
implementation 'io.micrometer:micrometer-tracing'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'
implementation platform('io.micrometer:micrometer-tracing-bom:latest.release')

以及

logging.pattern.level: "%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"

但是没有记录traceIds和spanIds。

我们是否漏掉了什么?


你可以移除micrometer-tracing的依赖,因为它是通过传递方式添加的(详情请参考这里)。不确定你是否需要micrometer-core,在我的情况下,只使用追踪桥和执行器就可以正常工作,如下方评论所述。 - undefined
1个回答

6

你需要执行器和一个桥接器,其他的都不需要:

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'

如果您还想报告您的跨度,您也应该添加zipkin报告器:

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'
implementation 'io.zipkin.reporter2:zipkin-reporter-brave'

这里有一个关于 start.spring.io 的示例,micrometer-samples 存储库中也有很多样例。


你好!我正在使用你们的演示项目,但未使用Zipkin报告后它无法正常工作。这是结果: 2023-05-26T22:02:11.632+07:00 " INFO [,,]" 341317 --- [ Test worker] com.example.demo.DemoApplicationTests可能有什么问题呢? - Victor Borovlev
发现了我的错误,忘记使用@Observed注释。 - Victor Borovlev
@VictorBorovlev .. 在我们的Springboot应用程序中,该注解在哪里使用? - Susheel Rao
我尝试在控制器类上添加注解,但在接收端得到了不同的跟踪 ID。发送和接收控制器上的跟踪 ID 不相同 - 对此问题有任何提示吗? - Susheel Rao
@SusheelRao 我在Controller类上使用了注解io.micrometer.observation.annotation.Observed,并且使用RestTemplate或WebClient来请求另一个应用程序,效果很好。此外,我还在ControllerAdvice类中使用了CurrentTraceContext来获取跟踪ID,并将其放入错误DTO中。 - Victor Borovlev
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接