![f93ae7ccba4ba633a9c92a8d49699002.png](https://img-blog.csdnimg.cn/img_convert/f93ae7ccba4ba633a9c92a8d49699002.png)
SpringCloud技术指南系列(十五)分布式链路跟踪Sleuth与Zipkin实现
一、概述
分布式链路追踪,是一种用于分析和监控应用程序的方法,尤其是那些使用微服务架构的那些应用。分布式链路跟踪有助于查找故障发生位置和导致性能低下的原因。
SpringCloud全家桶中,整合了Sleuth和Zipkin做分布式链路跟踪和数据的收集展示。
Sleuth:为服务之间调用提供链路追踪。通过 Sleuth 可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长。
Zipkin:可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。
Spring Cloud Zipkin 整合了Sleuth和Zipkin的功能,提供了一套完整的分布式链路解决方案。
代码可以在SpringBoot组件化构建https://www.pomit.cn/java/spring/springcloud.html中的Zipkin组件中查看,并下载。
首发地址: 品茗IT-首发
如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。
二、准备工作
使用zipkin,要明白zipkin的客户端和服务端的概念:
- Sleuth是做链路跟踪的。Spring Cloud Sleuth就可以完成链路跟踪;
- Zipkin收集数据,如果Spring Cloud应用使用了Zipkin,它就相当于客户端;
- Zipkin服务端是单独部署的,单纯负责收集数据和展示等。
2.1 安装zipkin服务端
首先要安装zipkin的服务端,就是一个jar包,启动之后收集客户端数据并做展示。
Zipkin开源地址:https://github.com/openzipkin/zipkin
当你首次接触zipkin时,一定会各种博客上的文章给绕晕的,乱七八糟,各种写法,这是因为Spring Cloud版本不同,提供的功能逐渐丰富,而且zipkin也提供了快读部署的方案。
我当前使用的Spring Cloud zipkin版本为2.1.0.RELEASE。zipkin在github的提交最新记录为Commits on Oct 25, 2019。
下面开始讲安装:
很多博客都是写的自己打包编译zipkin,然后用@EnableZipkinServer注解Spring boot应用来启动zipkin服务端。这种方式已经被官网遗弃,@EnableZipkinServer注解也被标记为@Deprecated。
所以,它给了一种更简单的部署方案:
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
如果用 Docker 的话,直接
docker run -d -p 9411:9411 openzipkin/zipkin
然后通过9411端口访问即可,比如我的是:http://10.247.62.23:9411
2.2 SpringCloud应用引入依赖
需要引入spring-boot-starter-web和spring-cloud-starter-zipkin;
因为使用了consul做服务注册发现,需要引入spring-cloud-starter-consul-discovery和spring-cloud-starte