该图片引用于它处:https://blog.csdn.net/u012394095/article/details/94389644
1. 下载opentracing-cpp 客户端调用的代码,网址为:opentraceing-cpp。注意要下稳定tag版本的代码。下载后,编译安装,生成特定的头文件和库文件到特定目录。
2. 下载 zipkin-cpp-opentracing 客户端调用的代码,网址为:zipkin-cpp-opentracin,下载后,编译安装。生成特定的头文件和库文件到特定目录。
3. 当客户端安装完成以后,进行zipkin服务端的安装,在linux zipkin-server的shell下执行 curl -sSL https://zipkin.io/quickstart.sh | bash -s
, 获得可执行的jar包。Server安装完成后访问网址http://localhost:9411/zipkin/可见web页面。
-
直接执行 :java -jar zipkin.jar 。默认以内存存储span。inMemoryStorage组件打包在zipkin的核心库中。 对于现实的工作负载,它既不持久存储,也不能被链路分析,在真实的生产环境中不能被使用。 其目的是进行测试,例如在不需要任何数据库的情况下在笔记本电脑上启动服务器。
-
服务器安装ES后,把客户端上报的span数据信息持久化到ES当中。执行
STORAGE_TYPE=elasticsearch ES_HOSTS=localhost:9200 nohup java -jar zipkin.jar &
可在真实的生产环境下使用。 -
客户端上报的span数据持久化到mysql当中。首先需要创建一个zipkin 数据库。然后在该数据库当中执行数据表的初始化语句,初始化语句在如下网址:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql ,创建 Zipkin初始化文件 zipkin_init.sql 包含上述网址的初始化语句后,在mysql中执行,source 绝对路径/ zipkin_init.sql。创建了 zipkin_annotations, zipkin_dependencies, zipkin_spans 三张数据表, mysql 初始化完成。执行
STORAGE_TYPE=mysql MYSQL_USER=tars MYSQL_PASS=tars2015 MYSQL_HOST=127.0.0.1 MYSQL_TCP_PORT= 3306 nohup java -jar zipkin.jar &
可在真实的生产环境下使用。
4. 为解决持久化在数据库中的span生成调用链的问题,需要下载相应的zipkin插件zipkin_dependencies(zipkin_dependencies)。可以在linux zipkin_dependencies的安装目录下的shell执行curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.dependencies:zipkin-dependencies:LATEST zipkin-dependencies.jar
获取可执行jar包。
1)ES 持久化存储时分析调用链,执行 STORAGE_TYPE=elasticsearch ES_HOSTS=localhost:9200 java -jar zipkin-dependencies.jar &
2)MYSQL持久化存储时分析调用链,执行 STORAGE_TYPE=mysql MYSQL_USER=tars MYSQL_PASS=tars2015 MYSQL_HOST=127.0.0.1 java -jar zipkin-dependencies.jar &
5. tarscpp配置,最新的tarscpp框架集成了zipkin调用的代码,需要进行一些对应的配置方可开启opentracing。Tars调用链使用了opentracing和zipkin-opentracing库,由于zipkin-opentracing库使用了libcurl库的功能,需要额外安装libcurl, 另外,编译器需要支持c++11;下载安装完opentracing-cpp和zipkin-cpp-opentracing后,可以进行框架的编译。具体为:
-
1)编译及安装
tars调用链功能通过编译选项_USE_OPENTRACKING进行控制,默认情况下为关闭。打开方式:在shell中执行export _USE_OPENTRACKING=1
,或者在/etc/profile中开启调用链监控,在最外层framework的CMakeList.txt中增加链接的库文件,具体如下:link_libraries( opentracing zipkin_opentracing zipkin curl)。然后进行编译。框架编译完后,修改servant/makefile/makefile.tars文件,在前面增加一行:_USE_OPENTRACKING=1表示框架打开了调用链开关。另外,opentracking, curl, zipkin_opentracing需要手动修改到正确的路径上来(目前默认路径为/usr/local/lib)。然后使用make install安装tars框架。客户端调用的CMakeList.txt中也要增加链接的库文件,具体如下:link_libraries( opentracing zipkin_opentracing zipkin curl)。 -
2)配置
使用tars调用链功能时需要在程序配置文件conf的client域中指定zipkin的地址,示例配置如下所示,其中collector_host和collector_port为必选(如果没有配置的话,调用链功能将无法使用),sample_rate可选(默认为1.0,区间为0.0~1.0,用于指定调用链信息上报zipkin collector的rate)。默认http收集客户端的数据。
<tars>
<application>
…
<client>
…
collector_host=127.0.0.1
collector_port=9411
sample_rate=1.0
</client>
</application>
</tars>
6. Kaffka收集消息,服务端配置:zipkin的启动时可以通过传参数的形式配置kafka和ES启动命令如下:
例如:
//生产者:bin/kafka-console-producer.sh --broker-list 10.22.0.130:9092 --topic test
//消费者:bin/kafka-console-consumer.sh --zookeeper 10.22.0.130:2181 --topic test --from-beginning
Java -DKAFKA_ZOOKEEPER=localhost:2181 -DSTORAGE_TYPE = elasticsearch-DES_HOSTS = http://localhost:9200 -jar zipkin.jar (消费者端口)
当前的所选取zipkin-cpp-opentracing客户端版本不支持kafka,要编写增加支持kafka collector的客户端,向kafka消息队列(SERVERIP:9092)生产者端口中发送消息,然后在http://SERVERIP:9411页面查看zipkin的链路跟踪信息