Zipkin是SpringCloud官方推荐的一款分布式链路监控的组件,使用它我们可以得知每一个请求所经过的节点以及耗时等信息,并且它对代码无任何侵入,我们先来看一下Zipkin给我们提供的UI界面都是提供了哪些信息。
- zipkin首页为我们提供了对于调用链路的搜索查询及展示的功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ze9KDnXq-1693123462094)(http://zhixiang.org.cn/2018/11/19/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E7%82%B9SpringCloud%EF%BC%88%E5%8D%81%E4%BA%8C%EF%BC%89%EF%BC%9AZipkin%E5%85%A8%E9%93%BE%E8%B7%AF%E7%9B%91%E6%8E%A7/1.png)] - 第二个选项卡里提供了历史数据的导入功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AetP4aod-1693123462095)(http://zhixiang.org.cn/2018/11/19/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E7%82%B9SpringCloud%EF%BC%88%E5%8D%81%E4%BA%8C%EF%BC%89%EF%BC%9AZipkin%E5%85%A8%E9%93%BE%E8%B7%AF%E7%9B%91%E6%8E%A7/2.png)] - 第三个选项卡里展示了各个微服务之间的关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Orq2hUWm-1693123462095)(http://zhixiang.org.cn/2018/11/19/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E7%82%B9SpringCloud%EF%BC%88%E5%8D%81%E4%BA%8C%EF%BC%89%EF%BC%9AZipkin%E5%85%A8%E9%93%BE%E8%B7%AF%E7%9B%91%E6%8E%A7/3.png)] - 我们再次回到首页,我们点开一个调用链路之后就会看到此次链路调用的详情
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7UGELxT2-1693123462096)(http://zhixiang.org.cn/2018/11/19/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E7%82%B9SpringCloud%EF%BC%88%E5%8D%81%E4%BA%8C%EF%BC%89%EF%BC%9AZipkin%E5%85%A8%E9%93%BE%E8%B7%AF%E7%9B%91%E6%8E%A7/4.png)] - 现在我们点开详情中的一个service,可以看到此次调用在这个微服务中的详细信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-29hZBbBh-1693123462096)(http://zhixiang.org.cn/2018/11/19/%E6%AF%8F%E5%A4%A9%E5%AD%A6%E7%82%B9SpringCloud%EF%BC%88%E5%8D%81%E4%BA%8C%EF%BC%89%EF%BC%9AZipkin%E5%85%A8%E9%93%BE%E8%B7%AF%E7%9B%91%E6%8E%A7/5.png)]
如何使用Zipkin
虽然在SpringBoot2.0以后官方不推荐我们自定义Zipkin服务端,而是使用官方提供的jar包。但是作为开发者来说,如果不能去看一看源码,修改一些自定义的配置的话就好像生命掌握在别人手里一样,哪天碰到一个莫名奇妙的bug可就不开心了。所以本例中使用zipkin最新2.11.8release版本来构建一个服务端
1. 创建一个微服务 cloud-demo-zipkin-server
1. pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>2.11.8</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>2.11.8</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
—|—
2. yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
server:
port: 9411
spring:
application:
name: zipkin-server
management:
metrics:
web:
server:
auto-time-requests: false
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
—|—
3. 启动注解
1
2
3
|
@EnableEurekaClient
@EnableZipkinServer
@SpringBootApplication
—|—
需要注意的是EnableZipkinServer注解是zipkin2.server.internal包下的。
2. 创建一个微服务 cloud-demo-zipkin-server
改造一下我们原先的两个微服务:cloud-demo-consumer-feign-hystrix,cloud-demo-provider
首先为它们都加上zipkin客户端的依赖
1
2
3
4
5
6
7
8
|
<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>
—|—
yml中指定zipkin-server的url,并且指定日志发送方式为web
1
2
3
4
5
|
spring:
zipkin:
base-url: http://localhost:19411
sender:
type: web
—|—
3. 查看结果
此时我们所有的准备工作已经做好了,我们启动Eureka、zipkin、cloud-demo-consumer-feign-hystrix、cloud-demo-provider几个微服务,调用几次cloud-demo-consumer-feign-hystrix的user/getUser接口。然后访问http://localhost:9411应该就可以看到zipkin的UI界面。
这个时候可能有的童鞋看到有数据,有的没有数据,这个不是你的配置错了,而是因为zipkin客户端默认收集10%的数据,你可以使用下方的配置更改zipkin的采样频率。
1
2
3
4
|
spring:
sleuth:
sampler:
probability: 1.0
—|—
GitHub地址:https://github.com/shiyujun/spring-cloud-demo。代码所在模块:cloud-demo-zipkin-server,cloud-demo-consumer-feign-hystrix,cloud-demo-provider
如果对您有所帮助,请记得帮忙点一个star哦
本文出自http://zhixiang.org.cn,转载请保留。