Sleuth简介 #

一、Sleuth概述 #

1.1 什么是链路追踪 #

链路追踪用于追踪请求在微服务间的调用链路,帮助定位性能问题和故障。

text
请求链路:
客户端 ──► 服务A ──► 服务B ──► 服务C
                    │
                    └──► 服务D

Trace: 1234567890
├── Span: service-a (10ms)
├── Span: service-b (20ms)
│   ├── Span: service-c (5ms)
│   └── Span: service-d (8ms)

1.2 核心概念 #

概念 说明
Trace 一次完整请求的链路
Span 一个服务处理过程
TraceId 全局唯一链路ID
SpanId 当前Span唯一ID

二、基本使用 #

2.1 添加依赖 #

xml
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

2.2 日志配置 #

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

2.3 日志输出 #

text
2024-01-01 12:00:00.000 [1234567890,abcdef1234] [http-nio-8080-exec-1] INFO  c.e.UserController - User request

三、手动创建Span #

java
@Autowired
private Tracer tracer;

public void doSomething() {
    Span span = tracer.nextSpan().name("custom-span");
    try (Tracer.SpanInScope ws = tracer.withSpan(span.start())) {
        span.tag("key", "value");
        span.event("event-name");
    } finally {
        span.end();
    }
}

四、总结 #

要点 说明
Trace 完整请求链路
Span 服务处理过程
日志集成 自动注入TraceId

接下来让我们学习 Zipkin集成

最后更新:2026-03-28