基于Springboot1.5.9+SpringCloud+Zipkin+ELK链路跟踪实现
-
思想实现:
基于zipkin和feign结合,生成span数据,写到本地文件,然后通过logstash发送到es,通过zipkin-ui或Kibana来展示
-
工程包目录介绍:
zipkin-common 公共组件包,主要实现logback过滤对中文的转义以及本demo重点核心:扩展Zipkin的span发送器
zipkin-eureka 注册中心
zipkin-provider-a/b 服务提供
zipkin-consumer 服务消费
zipkin-server zipkin链路跟踪UI展示 -
扩展Zipkin的span发送器说明:
3.1 翻Spring-cloud-sleuth-zipkin源码,知道其工作主要线路:
resources/META-INF/spring.factoires/[ZipkinAutoConfiguration] --> [ZipkinSpanReporter] -> [HttpZipkinSpanReporter] -> [RestTemplateSender]--> [AsyncReporter] -> [Sender.sendSpans]
3.2 至于如何封装成Span的不在本文描述范围
3.3 基于以上我们扩展一个Sender,实现sendSpans方法的实现,改为slf4j日志打印即可将feign产生的Span信息保存到本地文件
3.4 详情请参考com.xiao.zipkin.common.zipkin包的内容实现
3.5 logback-spring.xml参考 -
logstash 配置(待补充):
ELK环境搭建请自行查阅资料安装 -
更多参考资料:
构建sleuth+zipkin全链路监控系统
sleuth+zipkin+kafka+logstash链路追踪二次开发方案
分布式链路追踪技术对比