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

配置Zipkin与Micrometer后无法获取Span ID和Trace ID问题咨询

解决Micrometer + Zipkin无法获取Span ID/Trace ID的问题

以下是几个关键步骤来排查和解决这个问题:

1. 配置日志输出模板,自动携带Trace/Span ID

Micrometer Tracing会自动将traceId和spanId放入MDC(Mapped Diagnostic Context),你需要修改日志配置让这些ID显示在日志中:

  • 如果使用Logback,修改logback-spring.xml的日志pattern:
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %X{traceId:-} %X{spanId:-}%n</pattern>
  • 如果用application.properties配置日志:
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %X{traceId:-} %X{spanId:-}%n

2. 手动在代码中获取Trace/Span ID

如果需要在业务代码中直接使用这些ID,可以通过注入Tracer对象来获取:

import io.micrometer.tracing.Tracer;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TraceController {
    private final Tracer tracer;

    public TraceController(Tracer tracer) {
        this.tracer = tracer;
    }

    @GetMapping("/test")
    public String testTrace() {
        String traceId = tracer.currentSpan().context().traceId();
        String spanId = tracer.currentSpan().context().spanId();
        return String.format("Trace ID: %s, Span ID: %s", traceId, spanId);
    }
}

3. 确认Web请求追踪的自动配置生效

Spring Boot会自动配置TraceWebFilter来处理Web请求的追踪,但如果存在自定义的Web过滤器或WebMvc配置,可能会影响自动配置的生效:

  • 检查启动日志,确认TraceWebFilter相关Bean已初始化
  • 避免在自定义过滤器中覆盖或屏蔽掉追踪过滤器的执行顺序

4. 依赖适配检查(针对Spring Boot版本)

如果使用Spring Boot 3.x,确保你的依赖版本与Spring Boot的版本适配,micrometer-tracing-bridge-brave的版本无需手动指定,直接使用Spring Boot依赖管理中的版本即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:37:14