Spring Boot 3升级后PCF Gorouter的x-b3-traceid不一致问题
Spring Boot 3 迁移到 Micrometer Tracing 后 PCF Gorouter 与应用日志 x_b3_traceid 不一致问题
Spring Boot 3 中 Sleuth 项目已并入 Micrometer Tracing,将应用部署到 PCF 后出现应用日志与 PCF Gorouter 日志的 x_b3_traceid 不一致问题。升级前两者的 traceid 保持一致,现在出现差异:
- 应用日志中的预期 traceid:6447d6557ff6934ce613142682e7f6ff
- Gorouter 日志中的实际 traceid:4a947108c123812a06f86bb13c05bab0
示例日志
2023-04-25T09:32:05.556-04:00 [APP/PROC/WEB/2] [OUT] 2023-04-25T13:32:05.555Z INFO [sample-api,6447d6557ff6934ce613142682e7f6ff,67ed0eca64b448c1] 15 --- [nio-8080-exec-1] sample.controller.DemoController : Fetching the user info 2023-04-25T09:32:05.561-04:00 [RTR/11] [OUT] sample-api.com - [2023-04-25T13:32:05.542389295Z] "GET /demo HTTP/1.1" 200 0 55 "-" "PostmanRuntime/7.32.2" "127.0.0.1:12345" "127.0.0.1:12345" x_forwarded_for:"127.0.0.1" x_forwarded_proto:"https" vcap_request_id:"a3bae067-9e04-4299-6d50-c6a4256740e6" response_time:0.018694 gorouter_time:0.000253 app_id:"23f0f921-7931-4190-8453-344a595698ed" app_index:"2" instance_id:"3d2bb4f7-3fc3-450c-7853-9305" x_cf_routererror:"-" x_b3_traceid:"4a947108c123812a06f86bb13c05bab0" x_b3_spanid:"06f86bb13c05bab0" x_b3_parentspanid:"-" b3:"4a947108c123812a06f86bb13c05bab0-06f86bb13c05bab0"
依赖配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-observation</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-brave</artifactId> </dependency> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-brave</artifactId> </dependency>
当前配置
logging.pattern.level=%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}] # 添加trace和span id到日志中 spring.sleuth.propagation.type=w3c,b3 # 启用b3请求头,因PCF Zipkin接受b3而非默认的w3c格式
已尝试操作
- 更换过OpenZipkin Brave和OpenTelemetry追踪器,问题现象一致
- 怀疑PCF Gorouter忽略了请求头中的b3 traceid,自行生成新的traceid,寻求解决办法
内容的提问来源于stack exchange,提问作者Prince
相关产品推荐
相关产品推荐

