Rancher下部署zipkin服务
在rancher中新建一个服务部署
-
指定服务名称为:zipkin
-
配置Docker镜像为:openzipkin/zipkin:2.21.5
-
将容器内的9411端口映射到主机的9411端口
-
配置环境变量
1、配置ES地址
ES_HOSTS: http://192.168.1.228:9200
2、指定存储类型
STORAGE_TYPE: elasticsearch
3、配置kafka地址
KAFKA_BOOTSTRAP_SERVERS: 192.168.1.204:9092,192.168.1.205:9092,192.168.1.206:9092
页面使用
服务启动后默认可以通过9411端口访问zipkin的监控页面
打开http://192.168.1.210:9411/
输入traceId查询链路明细
查询依赖关系发现没有数据
注:zipkin会在es中创建以zipkin开头日期结尾的index,并且默认以天为单位分割。
实现了zipkin数据持久化至elasticsearch,但是无法正常显示dependencies。通过阅读zipkin在github说明,可以看到已经有了解决方案,本章将介绍如何实现并验证。
官网有如下描述:
Zipkin Dependencies collects spans from storage, analyzes links between services, and stores them for later presentation in the web UI (ex. http://localhost:8080/dependency).
This process is implemented as an Apache Spark job. This job parses all traces in the current day in UTC time. This means you should schedule it to run just prior to midnight UTC.
All Zipkin Storage Components are supported, including Cassandra, MySQL and Elasticsearch.
zipkin-dependencies生成依赖链
zipkin-dependencies
基于spark job
来生成全局的调用链,下载地址:https://github.com/openzipkin/zipkin-dependencies
通过rancher来部署zipkin-dependencies
服务
启动zipkin-dependencies
,我们再来看下依赖图,发现可以正常查询到依赖关系图了。
这里要注意的是程序只会根据当日的zipkin数据实时计算一次依赖关系,并以索引zipkin:dependency-2021-06-08
方式存入es中,然后就退出了,因此要做到实时更新依赖的话需要自己想办法实现周期性执行zipkin-dependencies
。
周期性执行zipkin-dependencies
参考这篇博文: