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

Spring Boot移除Zipkin与Sleuth依赖后,如何通过Docker实现微服务日志追踪?

Spring Boot 微服务日志追踪配置(替代已移除的Sleuth/Zipkin Client)

既然Spring Boot官方已经移除了Sleuth和Zipkin Client依赖,现在要实现日志链路追踪,得用Micrometer Tracing + Zipkin Exporter的组合,下面是具体步骤:

1. 替换核心依赖

别再用旧的spring-cloud-starter-sleuth或spring-cloud-starter-zipkin了,改成以下依赖:

Maven 配置

<dependencies>
    <!-- Micrometer Tracing 核心桥接 -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bridge-brave</artifactId>
    </dependency>
    <!-- Zipkin 链路数据导出器 -->
    <dependency>
        <groupId>io.zipkin.reporter2</groupId>
        <artifactId>zipkin-reporter-brave</artifactId>
    </dependency>
    <!-- Web项目必备依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

Gradle 配置

dependencies {
    implementation 'io.micrometer:micrometer-tracing-bridge-brave'
    implementation 'io.zipkin.reporter2:zipkin-reporter-brave'
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

2. 项目配置文件调整

在application.yml(或application.properties)里添加追踪相关配置:

spring:
  application:
    name: your-service-name  # 微服务名称,Zipkin界面会以此标识服务
management:
  tracing:
    sampling:
      probability: 1.0  # 采样率,1.0表示全量采集,生产环境可按需调低
  zipkin:
    tracing:
      endpoint: http://localhost:9411/api/v2/spans  # Zipkin容器的访问地址

如果你的微服务也是Docker容器部署,注意地址适配:

  • 若微服务与Zipkin在同一个Docker网络,直接用容器名:http://zipkin:9411/api/v2/spans
  • 若不在同一网络,用宿主机IP替代localhost(比如http://192.168.1.100:9411/api/v2/spans)

3. 日志中显示TraceId/SpanId

要让日志携带链路ID方便排查,修改日志配置(比如logback-spring.xml),在日志格式中加入%X{traceId:-} %X{spanId:-}:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %X{traceId:-} %X{spanId:-} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

启动服务后,日志会输出类似:2024-05-20 10:00:00.000 [http-nio-8080-exec-1] INFO com.example.controller.DemoController - 45678abc-123 9876def - 处理请求,其中45678abc-123是全局TraceId,9876def是当前请求SpanId。

4. Docker部署微服务的网络配置

如果微服务要打包成Docker镜像部署,推荐用Docker网络实现与Zipkin的互通:

  1. 创建专属Docker网络:
    docker network create tracing-network
    
  2. 重启Zipkin容器加入该网络:
    docker run -d --network tracing-network --name zipkin -p 9411:9411 openzipkin/zipkin
    
  3. 启动微服务容器时也加入同一网络:
    docker run -d --network tracing-network -p 8080:8080 your-service-image
    

依赖未生效的排查方向

  • 检查是否残留旧的Sleuth依赖,如有需排除避免版本冲突
  • 确认Micrometer、Zipkin Exporter版本与Spring Boot版本兼容(Spring Boot 3.x对应Micrometer 1.10+)
  • 启动服务后查看日志,是否有Zipkin连接失败的报错信息
  • 调用微服务接口后,访问Zipkin UI(http://localhost:9411)查询链路数据是否存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:25:20