Spring Boot 3.0.0集成Jaeger 3.3.1无追踪数据问题咨询
问题分析与解决方案
核心原因
opentracing-spring-jaeger-cloud-starter 3.x版本仅适配Spring Boot 2.x(基于Java EE),而Spring Boot 3.x切换为Jakarta EE API,两者底层依赖不兼容,导致追踪数据无法正常上报。此外,手动创建JaegerTracer Bean的方式在Spring Boot 3的自动配置体系下存在冲突,无法与Spring的请求拦截、WebClient追踪等组件正确集成。
解决步骤
1. 升级依赖版本
替换原有的Jaeger starter依赖为适配Spring Boot 3的4.x版本:
<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId> <version>4.0.0</version> <!-- 可使用更高兼容版本 --> </dependency>
2. 移除自定义Jaeger配置类
Spring Boot 3下,Jaeger starter会自动完成Tracer、采样器、上报器等核心组件的配置,手动创建JaegerTracer Bean会覆盖自动配置,导致集成异常。直接删除JaegerConfig类即可。
3. 通过配置文件简化配置
在application.yml或application.properties中添加Jaeger相关配置,替代硬编码的配置类:
opentracing: jaeger: service-name: jaeger-client sampler: type: const param: 1 reporter: log-spans: true udp-sender: host: localhost # 根据Jaeger Agent实际部署地址调整 port: 6831
4. 确保WebClient的追踪集成
若需使用WebClient调用其他服务并传递追踪上下文,无需手动创建WebClient Bean,starter会自动配置带有追踪拦截器的WebClient实例。若必须自定义WebClient,需注入OpenTracingWebClientCustomizer添加追踪支持:
@Configuration public class WebClientConfig { @Bean public WebClient webClient(OpenTracingWebClientCustomizer customizer) { return WebClient.builder() .apply(customizer) .build(); } }
验证
重启应用后,检查启动日志确认Jaeger Tracer初始化成功,发送请求后即可在Jaeger UI中看到服务及追踪数据。
内容的提问来源于stack exchange,提问作者Prasad Jagtap
相关产品推荐
相关产品推荐

