一. 基础解释
- Spring Cloud Sleuth
请求链路跟踪,在微服务下,服务之间相互调用,可能为了实现某一个功能,执行某一个请求,会级联调用多个服务,为了更好的监控管理服务,提供
Sleuth 链路跟踪 - 在 Spring Cloud Sleuth 链路跟踪中分为两块,Sleuth 负责链路跟踪, zipkin 负责展现跟踪数据
- Spring Cloud 在 F 版起不用构建 Zipkin Server端,直接调用 jar 包即可
zipkin 的使用
- 下载启动 zipkin
进入 zipkin 下载地址 https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
选择版本进行下载,此处以 zipkin-server-2.12.9-exec.jar 为例 点击将jar包下载到非中文路径下
- 启动 : 在下载路径下 cmd 进入命令行,输入"java -jar zipkin-server-2.12.9-exec.jar"
运行该jar(后面是下载的zipkin jar包名称,可以使用 Tab 键自动补全功能),出现下方像箭头一样的图案表示启动成功
- 访问: zipkin 默认端口号为9411, 浏览器访问 “http://运行zipkin ip地址:9411” 进行访问
二. 配置服务在调用时被 Spring Cloud Sleuth 监控
- 在需要监控的服务中添加 spring-cloud-starter-zipkin 依赖(该依赖中包含了sleuth zipkin)
<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
- 需要监控的服务 yml 中添加 zipkin 相关配置,将当前服务调用时的数据发送给指定的 zipkin
server:
port: 80
spring:
application:
name: cloud-order-service
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1 #采样率值等介于0到1之间,1则表示全部采集
eureka:
client:
#表示是否将自己注册进EurekaServer默认设为true
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设为true才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
#defaultZone: http://localhost:7001/eureka #单机版
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
- 此时,当调用 80 服务中的接口时,被 zipkin 监控到,就可以通过访问zipkin看到调用接口的完整的执行链路(需要监控的链路上的微服务都需执行以上两步)
- 每个需要被监控的服务 pom 文件中都需要引入 spring-cloud-starter-zipkin 依赖,yml 配置文件中都需要进行 zipkin 相关配置 ,配置后,当调用一个服务接口,假设该接口还级联调用了其它接口,都可以在 zipkin 中看到