SpringCloud(Greenwich版)Sleuth&Zipkin调用链路跟踪
推荐以下稳定版本号:
Spring Boot: 2.1.9.RELEASE
分布式服务跟踪--问题?
是什么?
针对上述问题,Spring Cloud Sleuth 为 Spring Cloud 提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了 Zipkin。
下面是 Spring Cloud 官网中一张完整的调用链路概念图:
初次看这张图都会是懵圈的状态,不过不要紧,你只需要了解其中 Trace 与 Span 的含义即可:
Trace:是指我们从服务开始到服务执行的终点的一次完整的请求 (request) 与响应 (response),存在唯一标识。
Span:是指调用链路的来源,在一次完整的追踪 (trace) 过程中,每调用一个服务都会记录调用信息与响应时间。
得出结论:一次trace由若干个span构成,sleuth是用于调用链路追踪,通过sleuth我们可以轻易的追踪到trace经过了哪几个服务,每个服务花费的时间等。
二、Spring Cloud Sleuth与Zipkin整合
Zipkin简介
Sleuth之Zipkin搭建安装
1)下载Zipkin jar包
2)运行Zipkin Server
这样我们的 Zipkin 服务器就安装完成了,与构建项目工程对比,是不是非常 EASY。友情提示:
3)测试
浏览器访问http://localhost:9411/zipkin/,能够看到如下Zipkin Dashboard页面了,而9411是Zipkin的默认端口号,(就像tomcat默认端口号8080一样)
现在就算单击 Find Traces 按钮,也没有链路追踪的微服务数据。
添加链路追踪的微服务模块
接下来将跟踪信息展现到 Zipkin Dashboard页面上,我们拿之前Eureka注册中心provider-service和Zuul实现微服务网关zuul-service这两个项目工程"开刀"。改造的两个项目工程依赖与配置都相同。
compile group: 'org.springframework.cloud', name: 'spring-cloud-sleuth-zipkin'
spring:
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1.0 #100%采样率
-
spring.zipkin.base-url:指定 Zipkin 服务器地址
-
spring.sleuth.sampler.probability:指定链路追踪采样的请求百分比,默认值是0.1,即10%
Zipkin 服务器上面已经启动完成了。
Step1:
Step2:运行 provider-service 启动类,端口为8081
Step3:运行 zuul-service 启动类,端口为8080
Step5:多次访问通过Zuul转发http://localhost:8080/provider-service/client/info?access-token=wessonshin请求,由于zuul-service工程之前写过token身份验证,需要带access-token参数才能够访问成功:
-
hello, service provider port is from:8081
Step6:然后访问http://localhost:9411/zipkin/首页,单击 Find Traces 按钮,就能够看到 Zipkin 已经获取到的调用链路跟踪信息如下:
接着可以单击其中的一个微服务请求,查看该请求的详细数据,其中包括关注的请求消耗时间等:
此外,在 Zipkin Dashboard 界面中还可以通过 Dependencies 标签查看服务请求中各个微服务之间的依赖关系: