引入Maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
配置yml文件
bootstrap.yml文件增加如下配置
注:这个配置不是必须要,默认采样策略为RateLimitingSampler,限制每秒10个(rate=10),设置
ProbabilityBasedSampler采样,采样比例为0.1(10%),设置RateLimitingSampler限速采样策略后,ProbabilityBasedSampler的配置将不生效。在开发测试环境中,建议采样比例设置为1.0(100%),便于发现问题,生产环境设置为0.1,防止影响性能。
spring:
sleuth:
sampler:
# ProbabilityBasedSampler 默认抽样策略
probability: 1.0 # 采样比例, 1.0 表示 100%, 默认是 0.1
# RateLimitingSampler 抽样策略, 设置了限速采集, spring.sleuth.sampler.probability 属性值无效
#rate: 100 # 每秒间隔接受的 trace 量
启动
这时候日志已经发生了变化,在日志级别后面增加了如下图所示的[]里面的内容
日志的格式为:[application name, traceId, spanId, export]
注意:从controller进入的http请求会增加相应的值,否者为空值
- application name — 应用的名称,也就是application.properties中的spring.application.name参数配置的属性。
- traceId — 为一个请求分配的ID号,用来标识一条请求链路。
- spanId — 表示一个基本的工作单元,一个请求可以包含多个步骤,每个步骤都拥有自己的spanId。一个请求包含一个TraceId,多个SpanId
- export — 布尔类型。表示是否要将该信息输出到类似Zipkin这样的聚合器进行收集和展示。
可以看到,TraceId和SpanId在两条日志中是相同的,即使消息来源于两个不同的类。这就可以在不同的日志通过寻找traceid来识别一个请求。