跳转至

SpringCloud Sleuth+Zipkin-链路追踪

官网:spring-cloud/spring-cloud-sleuth: Distributed tracing for spring cloud (github.com)

分布式链路追踪之Spring Cloud Sleuth+Zipkin最全教程! - bucaichenmou - 博客园 (cnblogs.com)

1.Sleuth+Zipkin是什么

  1. 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用,来协同产生最后的请求结果,每一个请求都会形成一条复杂的分布式服务调用链路
  2. 链路中的任何一环出现高延时或错误都会引起整个请求最后的失败,因此对整个服务的调用进行链路追踪和分析就非常的重要
  3. Sleuth 提供了一套完整的服务跟踪的解决方案并兼容 Zipkin。Sleuth 做链路追踪 , Zipkin 做数据搜集/存储/可视化。

image-20230603193818870

2.Sleuth+Zipkin的工作原理

  1. Span 和 Trace 在一个系统中使用 Zipkin 的过程-图形化

image-20230603194444789

  • 一条链路通过Trace Id唯一标识 , Span标识发起的请求信息,各span通过parent id关联起来
  • Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
  • Span:基本工作单元,表示调用链路来源,通俗的理解span就是一次请求信息

  • spans 的 parent/child 关系图形化

image-20230603195137905

标识的红线,后一个span节点的parentId 指向/记录 了上一个Span,span就是一次请求信息,多个Span集合就构成一条调用链路,在span=C 这个节点存在分支

3.搭建链路监控实例

要求: 通过 Sleuth 和 Zipkin 可以对服务调用链路进行监控,并在 Zipkin 进行显示

3.1安装Zipkin

  1. 访问 https://repo1.maven.org/maven2/io/zipkin/java/zipkin-server/2.12.9/,点击下载第一个jar文件

image-20230603200120580

  1. 把 zipkin-server-2.12.9-exec.jar 放到指定的目录

  2. 进入 cmd , 执行指令运行: java -jar zipkin-server-2.12.9-exec.jar

image-20230603200546977

  1. 浏览器输入:http://localhost:9411/zipkin/

image-20230603200718944

3.2服务提供方集成 Sleuth/Zipkin

  1. 修改 member-service-provider-10000 的 pom.xml , 增加引入 sleuth+zipkin
<!--zipkin的starter依赖集成了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

image-20230603201518115

  1. 修改 member-service-provider-10000 的 appliaction.xml , 指定 Zipkin

image-20230603201757283

3.3服务消费方集成 Sleuth/Zipkin

略,步骤同3.2

  1. 修改 member-service-consumer-80 的 pom.xml , 增加引入 sleuth+zipkin
  2. 修改 member-service-consumer-80 的 appliaction.xml , 指定 Zipkin

3.4测试

按顺序启动 e-commerce-eureka-server-9001、member-service-provider-10000、member-service-consumer-80。在浏览器输入: http://localhost/member/consumer/get/1

image-20230603203046191

3.5查看监控&分析结果

访问 http://localhost:9411/zipkin/

  1. 选择某个服务,看结果

image-20230603203414525

  1. 查看一次调用链路的深度,以及该链路包含请求, 各个请求耗时,找到请求瓶颈,为优化提供依据

image-20230603203640850

image-20230603203534826

  1. 查看服务调用的依赖关系

image-20230603203911946