spring-cloud使用sleuth+zipkin实现链路追踪步骤
sleuth+zipkin实现链路追踪的作用:
它可以帮助收集服务的时间数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现
每个服务向zipkin报告计时数据,zipkin会根据调用关系通过Zipkin UI生成依赖关系图,展示多少跟踪请求经过了哪些服务,该系统让开发者可通过一个web前端轻松地收集和分析数据,可非常方便的监测系统中存在的瓶颈
使用步骤:
① 导包
这个放在公共微服务的pom中:
<!--链路追踪sleuth:zipkin包含sleuth,不用重复引用-->
<!--
<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>
可以只引第一个包,但是只能从控制台看。第二个包引了才能从可视化界面看。第二个包,包含第一个包,所以只引第二个即可。
这里默认有springcloud 版本控制,所以上面的包没写版本号:
<dependencyManagement>
<dependencies>
<!-- SpringCloud 版本控制依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
②在要追踪的微服务配置yml
logging:
level:
org.springframework.cloud.openfeign: debug
org.springframework.cloud.sleuth: debug
③在docker上安装zipkin服务器(执行这段就会自动下载好)
docker run -d -p 9411:9411 openzipkin/zipkin
也可以在linux服务器上安装zipkin服务器,或者在windows上直接下载zipkin服务器(使用阿里云MAVEN仓库搜索zipkin-server会找到zipkin-server-2.21.6-exec.jar 有一个下载地址就可以轻松下载jar包了)
④ 添加zipkin的相关配置
spring:
#zipkin的相关配置
zipkin:
#zipkin服务器的地址(根据自己的zipkin服务器)
base-url: http://192.168.61.147:9411/
#关闭服务发现,否则springcloud会把zipkin的url当作服务名称
discovery-client-enabled: false
sender:
#设置使用http的方式传输数据
type: web
sleuth:
sampler:
#设置采样数据 1表示 100%,默认是0.1即 10%
probability: 1
⑤ 访问192.168.61.147:9411/
这里就可以看到执行的数据追踪
⑥ 把zipkin的数据持久化到ES (持久化的问题,未完待续………………)
据说通过docker的方式,只需:(我暂时未核实zipkin的持久化)
docker run --env STORAGE_TYPE=elasticsearch --env ES_HOSTS=192.168.61.147:9200 openzipkin/zipkin-dependencies