You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中用Micrometer接收traceparent头:spanId为何重新生成?

问题原因分析:traceId正确传递但spanId重新生成
  • 默认链路追踪行为
    Micrometer Tracing与Spring Boot整合时,默认逻辑是保留上游请求traceparent中的traceId,同时生成新的spanId作为当前服务的本地span标识。每个服务的请求处理环节都需要独立的span来记录自身的处理轨迹,前端的spanId属于上游请求的span,后端作为下游服务,会将上游spanId设为当前span的parentId,而非直接复用它作为自己的spanId。

  • 日志未展示parentId
    你当前的日志格式[KYC-BE,4bf92f3577b34da6a3ce929d0e0e4736,3cc2a015c655ce84]只包含了服务名、traceId和当前spanId,没有输出parentId字段。实际上后端已经正确识别了前端的spanId作为当前span的parentId,只是日志没体现出来。

  • 验证方法

    • 借助Zipkin、Jaeger等追踪平台查看完整链路,能清晰看到当前后端span的parentId就是前端的00f067aa0ba902b7。
    • 修改日志配置,加入parentId输出。比如调整application.properties中的日志格式:
      logging.pattern.level=%5p [%X{spring.application.name},%X{traceId},%X{spanId},%X{parentId}]
      
      重启服务后,日志会显示parentId,就能确认它和前端的spanId一致。

内容的提问来源于stack exchange,提问作者Michele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:22:12