Spring Cloud Sleuth
Spring Cloud Sleuth 是服务跟踪组件,通过日志提供服务之间调用链路数据。
Spring Cloud Sleuth数据格式:[微服务名称,TraceId,SpanId,导出标识]
TraceId是一条服务链路上的唯一标识,SpanId则为步骤id。
我们只需要在各个微服务中引入Spring Cloud Sleuth的maven依赖,从输出日志中即可查看。
这里以服务A调用服务B,服务B调用服务C为例,在这三个服务中分别加入Spring Cloud Sleuth的maven依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
分别启动项目
调用A服务的请求查看日志(截取主要日志):
INFO [service-a,e9a0b83ebcefda4b,e9a0b83ebcefda4b,true] 8184 --- [nio-8001-exec-1] c.demo.servicea.controller.AController : a
INFO [service-b,e9a0b83ebcefda4b,a8f44111ff24da26,true] 3756 --- [nio-8002-exec-2] c.demo.serviceb.controller.BController : b
INFO [service-c,e9a0b83ebcefda4b,2741d01d75fb3146,true] 10008 --- [nio-8003-exec-5] c.demo.servicec.controller.CController : c
通过[service-a,e9a0b83ebcefda4b,e9a0b83ebcefda4b,true]
,[service-b,e9a0b83ebcefda4b,a8f44111ff24da26,true]
,[service-c,e9a0b83ebcefda4b,2741d01d75fb3146,true]
这就组成了一条完整的服务调用链路。
tranceID:e9a0b83ebcefda4b
spanID:e9a0b83ebcefda4b-》a8f44111ff24da26-》2741d01d75fb3146
这种 看起来十分的麻烦,你需要分别去三个服务中查看日志。
Zipkin
分布式链路追踪系统,将Spring Cloud Sleuth提供的服务链路数据收集起来,进行可视化的展示。
Zipkin需要独立的部署服务端。部署完服务端,只需要在微服务中引入Zipkin的客户端即可。
-
部署Zipkin服务端
快捷地址:Zipkin
里面介绍了三种方式。
我就用第二种方式,直接 在Linux服务器上面部署了。
运行成功以后直接访问即可。
-
微服务引入Zipkin客户端
在微服务中添加Zipkin客户端依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
配置文件中添加Zipkin的相关配置
spring: #sleuth配置 sleuth: #采样器 sampler: #采样率 默认0.1。采集TraceID的比率 probability: 1.0 #每秒采集TraceID数据量 rate: 10 #Zipkin设置 zipkin: base-url: http://localhost:9411
扩展:
spring.sleuth.sampler.probability
与spring.sleuth.sampler.rate
配套使用,出于对微服务的保护机制,如果在高并发情况下,每秒采集Trace数据量很高,且采集比率很高的情况下,会导致微服务挂掉。这里用于模拟,设置的数据。三个服务重启成功,调用请求,我们在Zipkin的网页中输入服务名:
查看详情
关于sleuth整合Zipkin的用途还有很多。Sleuth Web