Spring Boot升级至3.0.6后Kibana事务模块无请求追踪
检查APM代理兼容性
Spring Boot 3.x切换为Jakarta EE API,旧版Elastic APM代理基本不兼容。先确认你使用的Elastic APM Agent版本至少为1.35.0(该版本开始支持Spring Boot 3)。同时核对agent核心配置,比如elastic.apm.service_name、elastic.apm.server_url,避免因升级导致配置被覆盖或写错。替换Spring Cloud Sleuth为Micrometer Tracing
Spring Cloud Sleuth已停止维护,Spring Boot 3官方推荐用Micrometer Tracing对接OpenTelemetry。如果之前依赖Sleuth,直接替换:
移除旧的spring-cloud-starter-sleuth依赖,添加以下依赖:<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-otel</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-exporter-otlp</artifactId> </dependency>然后在配置文件中添加Micrometer和OTLP的配置:
management: tracing: sampling: probability: 1.0 # 测试阶段开全量采样,生产按需调整 otlp: tracing: endpoint: http://你的APM服务器地址:8200/v1/traces给Java 17添加模块访问权限
Java 17的模块化系统会限制代理访问内部类,需要给JVM追加参数:--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED若使用Elastic APM Agent,再加
-Delastic.apm.use_unsafe=true,可绕过部分模块访问限制。核对Elastic Stack版本匹配
确保Kibana、Elasticsearch与APM Agent版本对应,比如使用Elastic Stack 8.x,就必须搭配8.x系列的APM Agent,版本不匹配会导致追踪数据解析失败,Kibana无法正常展示。排查日志与ES索引
开启APM Agent的debug日志(添加JVM参数-Delastic.apm.log_level=debug),检查是否存在数据发送报错,比如连接APM服务器失败、数据格式错误。同时查看Elasticsearch中的apm-*索引是否有新数据写入,先确认追踪数据是否成功上报到ES,排除Kibana前端展示问题。验证追踪上下文传递
升级后检查服务间调用的traceparent请求头是否正确生成并携带,也可以在业务日志中打印traceId,验证每个请求的追踪链路是否正常生成。
内容的提问来源于stack exchange,提问作者Anthony Vinay

