这两天看了好几篇帖子,写zipkin与dubbo整合的内容都不全面,忍不住亲自上手码一遍。
利用zipkin可以对dubbo进行调用链监控,可以查到调用链中的dubbo服务的性能,并且dubbo提供了SPI的接口,能很容易完成并自定义相应的filter去监控dubbo服务。
Zipkin是一个致力于收集分布式服务的时间数据的分布式跟踪系统。
Zipkin 主要涉及四个组件:collector(数据采集),storage(数据存储),search(数据查询),UI(数据展示)。
github源码地址:https://github.com/openzipkin/zipkin。
Zipkin提供了可插拔数据存储方式:In-Memory,MySql, Cassandra, Elasticsearch
1、下载zipkin
http://central.maven.org/maven2/io/zipkin/java/zipkin-server/2.11.7/zipkin-server-2.11.7-exec.jar
2、运行zipkin
(1)In-Memory方式
1 |
|
注意:内存存储,zipkin重启后数据会丢失,建议测试环境使用
(2)MySql方式
目前只与MySQL的5.6-7。它的设计是易于理解,使用简单。但是,当数据量大时,查询很慢。性能不是很好。
创建数据库zipkin,建表 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
启动zipkin命令
1 |
|
(3)Elasticsearch方式
创建elasticsearch用户,安装启动Elasticsearch服务
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
zipkin启动命令
1 |
|
启动成功访问地址:http://192.168.20.15:9411/zipkin/(192.168.20.15替换为对应zipkin部署服务器地址)
效果图如下:
简单的描述一下,同ServletFilter一样,在dubbo中利用Filter过滤请求,传递TraceId等参数,生成相应的span传递给zipkin服务器。引入brave-instrumentation-dubbo-rpc包,这是一个SPI的Filter包。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
brave-instrumentation-dubbo-rpc包里面有一个TracingFilter的类,在其invoke方法中实现了对span的一些操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
|
该Filter是以SPI的方式引入dubbo的,在默认文件/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter中,有这样的声明:
1 |
|
然后在dubbo的配置中引入该Filter即可。
wholly-dubbo-provider.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
wholly-dubbo-consumer.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
brave.properties
1 2 3 4 |
|
然后还需要为该Filter注入一个Tracing实例,并且该实例名必须为tracing。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Tracing类的主要作用是针对span的操作做一些配置,并设置上传zipkin服务器。
在这里不演示如何配置dubbo服务,之前的博文有相关介绍。效果图如下:
参考:
zipkin与dubbo整合-https://shiliewrain.github.io/2018/07/20/zipkin2-dubbo/
dubbo+zipkin调用链监控-https://www.cnblogs.com/ASPNET2008/p/6709900.html