一、简介
随着系统越来越庞大,各个服务间的调用关系也变得越来越复杂。当客户端发起一个请求时,这个请求经过多个服务后,最终返回了结果,经过的每一个服务都有可能发生延迟或错误,从而导致请求失败。这时候就需要请求链路跟踪工具来帮助我们,理清请求调用的服务链路,解决问题。
二、客户端配置
1、向pom文件中添加依赖
<!--添加链路追踪开始--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <!--添加链路追踪结束-->
2、application.yml文件中添加配置
spring: #设置链路追踪 zipkin: base-url: http://localhost:9411 sleuth: sampler: probability: 0.1 #设置Sleuth的抽样收集概率,0.1表示10%
三、整合Zipkin获取及分析日志
Zipkin是Twitter的一个开源项目,可以用来获取和分析Spring Cloud Sleuth 中产生的请求链路跟踪日志,它提供了Web界面来帮助我们直观地查看请求链路跟踪信息。
1、zipkin-serve下载地址:
https://zipkin.io/pages/quickstart.html
2、zipkin-serve启动:
java -jar zipkin-server-2.12.9-exec.jar
3、Zipkin页面访问地址:http://localhost:9411
1)访问成功界面如下:
2)查询请求响应时间等
3)查询服务之间的依赖关系
四、使用Elasticsearch存储跟踪信息
如果zipkin-server重启一下就会发现刚刚的存储的跟踪信息全部丢失了,可见其是存储在内存中的,有时候我们需要将所有信息存储下来,这里将信息存储到Elasticsearch。
1、安装Elasticsearch并启动
参考:https://www.cnblogs.com/donleo123/p/14155322.html
2、修改zipkin-server的启动参数
zipkin: base-url: http://localhost:9411 sleuth: sampler: probability: 0.3 #设置Sleuth的抽样收集概率
3、启动zipkin
java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=localhost:9200
参数说明:
- STORAGE_TYPE:表示存储类型
- ES_HOSTS:表示ES的访问地址
更多的参数可参考路径:
https://github.com/openzipkin/zipkin/tree/master/zipkin-server#elasticsearch-storage