目录
- 一. 基础解释
-
- 二. 配置服务在调用时被 Spring Cloud Sleuth 监控
一. 基础解释
- 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)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
- 需要监控的服务 yml 中添加 zipkin 相关配置,将当前服务调用时的数据发送给指定的 zipkin
server:
port: 80 #当前服务端口号(在访问时默认使用80端口,访问时可以省略)
spring:
application:
name: cloud-order-service #当前服务名称
datasource:
type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
driver-class-name: com.mysql.cj.jdbc.Driver #mysql驱动包
url: jdbc:mysql://localhost:3306/test01?serverTimezone=GMT%2B8 #连接的库
username: root
password:
#=============zipkin相关配置===============================
zipkin:
#zipkin地址,当前服务调用时将调用产生的数据发送给该地址指定的kipkin
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1 #采样率,取值介于 0到1之间,1则表示全部收集,一般是0.5
#=============zipkin相关配置end===============================
mybatis:
mapperLocations: classpath:mapper/*.xml #扫描mappper.xml */
type-aliases-package: com.order.dao #扫描对应mapper.xml 接口
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
#eureka 注册中心访问连接,集群环境多个注册地址
defaultZone: http://127.0.0.1:7001/eureka,http://127.0.0.1:7002/eureka
instance:
instance-id: order80 #配置当前服务向eureka注册中心注册时显示的服务器主机名称
prefer-ip-address: true #配置在开发人员直接访问eureka服务器时显示当前eureka上注册的服务的ip
lease-renewal-interval-in-seconds: 1 #指定定时向eureka注册中心发送代表当前服务心跳包的时间默认30秒
# Eureka 接收到当前服务最后一次发送代表正常心跳包的等待时间,超过则将当前服务在 Eureka 上踢除
lease-expiration-duration-in-seconds: 2
- 此时,当调用 80 服务中的接口时,被 zipkin 监控到,就可以通过访问zipkin看到调用接口的完整的执行链路
- 每个需要被监控的服务 pom 文件中都需要引入 spring-cloud-starter-zipkin 依赖,yml 配置文件中都需要进行 zipkin 相关配置 ,配置后,当调用一个服务接口,假设该接口还级联调用了其它接口,都可以在 zipkin 中看到