1、什么是链路监控?
链路监控指的是,监控程序运行的整个调用链,简单来说就是服务之间的相互调用的整个链路,例如我们的网关服务 call 用户服务,然后用户服务 call 订单服务,那么这个调用链路就是如下流程:
用户 ---------> 网关服务 ------> 用户服务 ---------> 订单服务,这个链路中回发起3次请求,分别如下:
request1:用户请求网关服务
request2:网关服务调用用户服务
request3:用户服务调用订单服务
那么我们如何来监控这个歌调用链路的执行情况呢?这个时候链路监控就上场了,在行业内链路监控的产品是比较多的,例如美团的CAT、spring-cloud的sleuth、shywallking等产品。
2、spring-cloud的sleuth链路监控的基本实现思想:
spring-cloud的sleuth 链路监的思想就是如下图:
TraceId 表示本次链路调用的id本次链路监控只有一个,span表示整个链路调用中的某个请求,在spring-cloud-sleuth中埋点后采集的数据如下:
用户 -----> gateway-service: gateway-service服务接收到请求的时候埋点生成 traceId = 618dfe6d1941750e spanId = 618dfe6d1941750e
gateway-service -------> user-service: user-service接收到请求的时候埋点生成 spanId = 618dfe6d1941750e 然后也会接收 gateway-service 发来的tranceId = 618dfe6d1941750e
user-service -------> order-service: user-service接收到请求的时候埋点生成 spanId = 2ee8c038590ab541 然后也会接收 user-service 转发来的tranceId = 618dfe6d1941750e
这些埋点的生成的数据都可以上报到zipkin里面进行数据展示。
3、实战spring-cloud-sleuth + zipkin 实现链路监控:
3.1、需要在整个链路中调用到的服务都添加如下两个依赖以及配置项:
依赖jar:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
配置项:
#配置zipkin的服务地址,也就是埋点数据上报的服务
spring.cloud.zipkin.base-url=http://localhost:9411
#配置埋点数据的上报百分比,我们选择100%上报
spring.cloud.sleuth.sampler.probability=1.0
3.2、启动zipkin服务:
先下载zipkin服务的可执行jar包,下载地址为https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/ 选择一个版本,然后下载其中的 zipkin-server-${version}-exec.jar,然后直接java -jar zipkin-server-${version}-exec.jar 即可,zipkin默认监听的端口是9411,我们使用浏览器进行访问,http://localhost:9411/zipkin/ , 可以得到如下页面:
接下来我们进行链路执行,然后点击Find Traces 进行查看,得到如下页面:
我们可以找到一个链路的埋点数据,点击查看详细:
以上就是spring-cloud-sleuth + zipkin的实战。