5.1:链路追踪入门:Sleuth

一. Sleuth简介

  1. 什么是Sleuth?Spring Cloud Sleuth为服务之间调用提供链路追踪。通过Sleuth可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长。从而让我们可以很方便的理清各微服务间的调用关系

  2. 作用:做日志埋点

  3. 官方文档:http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#sleuth-adding-project

 


二. Sleuth使用与分析

  1. 在pom.xml中添加依赖

    org.springframework.cloud

    spring-cloud-starter-sleuth

 

  1. 观察控制台打印

INFO [trace-1,f410ab57afd5c145,a9f2118fa2019684,false]

 

  1. 控制台分析

    1. 第一个值:trace-1,它记录了应用的名称,也就是application.properties中spring.application.name参数配置的属性。

    2. 第二个值:f410ab57afd5c145,Spring Cloud Sleuth生成的一个ID,称为Trace ID,它用来标识一条请求链路。一条请求链路中包含一个Trace ID,多个Span ID。

    3. 第三个值:a9f2118fa2019684,Spring Cloud Sleuth生成的另外一个ID,称为Span ID,它表示一个基本的工作单元,比如:发送一个HTTP请求。

    4. 第四个值:false,表示是否要将该信息输出到Zipkin等服务中来收集和展示。

 


三. Sleuth原理

例如:由A服务对B服务发起的请求,在发送到B服务之前sleuth会为在该请求的Header中增加实现跟踪需要的重要信息,主要有下面这几个(更多关于头信息的定义我们可以通过查看org.springframework.cloud.sleuth.Span的源码获取):

  1. X-B3-TraceId:一条请求链路(Trace)的唯一标识,必须值

  2. X-B3-SpanId:一个工作单元(Span)的唯一标识,必须值

  3. X-B3-ParentSpanId::标识当前工作单元所属的上一个工作单元,Root Span(请求链路的第一个工作单元)的该值为空

  4. X-B3-Sampled:是否被抽样输出的标志,1表示需要被输出,0表示不需要被输出

  5. X-Span-Name:工作单元的名称

 

 

 

 

 

 

你可能感兴趣的:(SpringCloud)