> 文档中心 > Linux搭建Zipkin,实现数据持久化到Mysql、ES

Linux搭建Zipkin,实现数据持久化到Mysql、ES

目录

  • 1、下载
  • 2、编译
  • 3、部署、启动
  • 4、访问测试
  • 5、UI页面介绍
  • 6、持久化配置
    • 6.1 持久化到Mysql
    • 6.2 持久化到ES

Zipkin分为两端,一个是 Zipkin服务端,一个是 Zipkin客户端,客户端也就是微服务的应用(java端)。 客户端会配置服务端的 URL 地址,一旦发生服务间的调用的时候,会被配置在微服务里面的 Sleuth 的监听器监听,并生成相应的 Trace 和 Span 信息发送给服务端。

1、下载

下载地址:https://github.com/openzipkin/zipkin/tags
gitHub下载对应版本的zipkin,比如:zipkin-2.21.7.zip

2、编译

将下载的zipkin-2.21.7.zip进行解压得到zipkin-2.21.7目录:
Linux搭建Zipkin,实现数据持久化到Mysql、ES
进入目录,执行mvnw -DskipTests --also-make -pl zipkin-server clean install命令,开始编译:
Linux搭建Zipkin,实现数据持久化到Mysql、ES
编程完成后,在zipkin-server\target目录下得到zipkin-server-2.21.7-exec.jar
Linux搭建Zipkin,实现数据持久化到Mysql、ES

3、部署、启动

创建工作目录:

mkdir /opt/zipkin -p

将本地的jar包拷贝到/opt/zipkin目录下

建立start.sh脚本:

Zipkin默认端口为9411,在启动时通过--server.port=xxxx设置指定端口

#!/bin/shexport LANG="en_US.UTF-8"cd /opt/zipkinrunMessage=`ps aux | grep \`cat pidfile.txt\``projectStartCommand="/usr/local/java/jdk1.8.0_131/bin/java -jar zipkin-server-2.21.7-exec.jar"if [[ $runMessage == *$projectStartCommand* ]]thenecho "Application has starting ,restarting..."kill -9 `cat pidfile.txt`nohup /usr/local/java/jdk1.8.0_131/bin/java  -jar zipkin-server-2.21.7-exec.jar -java.tmp.dir=/opt/zipkin/temp >/dev/null >zipkin.log 2>&1 & echo $! > pidfile.txt elseecho "Application has stopped ,starting..."nohup /usr/local/java/jdk1.8.0_131/bin/java  -jar zipkin-server-2.21.7-exec.jar -java.tmp.dir=/opt/zipkin/temp >/dev/null >zipkin.log 2>&1 & echo $! > pidfile.txtfi

建立stop.sh脚本:

#!/bin/shcd /opt/zipkinPID=$(cat pidfile.txt)if [ ${PID} ]; thenecho 'Application is stpping...'echo kill $PID DONEkill $PIDelseecho 'Application is already stopped...'fi

脚本修改权限:

chmod 777 start.shchmod 777 stop.sh

配置自启:

vim /usr/lib/systemd/system/zipkin.service

内容:

[Unit]Description=zipkin[Service]Type=forkingExecStart=/opt/zipkin/start.shExecStop=/opt/zipkin/stop.shPrivateTmp=true[Install]WantedBy=multi-user.target

操作命令:

# 开启自启systemctl daemon-reloadsystemctl enable zipkin.service# 启动systemctl start zipkin#停止systemctl stop zipkin

4、访问测试

访问地址:162.11.15.114:9411
Linux搭建Zipkin,实现数据持久化到Mysql、ES

5、UI页面介绍

Linux搭建Zipkin,实现数据持久化到Mysql、ES
Linux搭建Zipkin,实现数据持久化到Mysql、ES
Linux搭建Zipkin,实现数据持久化到Mysql、ES

6、持久化配置

Zipkin Server默认会将追踪数据信息保存到内存,在重启服务后追踪数据将不存在,Zipkin支持将追踪数据持久化到mysql数据库或elasticsearch中。

持久化需要注意Mysql与ES的版本,在https://github.com/openzipkin/zipkin,可以进行查看,如下:
在这里插入图片描述

6.1 持久化到Mysql

1、创建数据库,比如zipkin

2、创建表,语句参考:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql
Linux搭建Zipkin,实现数据持久化到Mysql、ES
3、修改启动命令
在启动时指定Mysql配置,将脚本中的启动命令修改为:

/usr/local/java/jdk1.8.0_131/bin/java  -jar zipkin-server-2.21.7-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=111.229.160.175 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=lhzlx -java.tmp.dir=/opt/zipkin/temp >/dev/null >zipkin.log 2>&1 & echo $! > pidfile.txt 

在这里插入图片描述
4、验证:
启动zipkin-server并且进行请求,再次重启zipkin-server,可以看见依然存在请求链路录记录,并且mysql表中存在记录。

6.2 持久化到ES

持久化到ES不需要建立什么配置信息,只需要在启动jar时指定ES地址即可,将脚本中的启动命令修改为:

/usr/local/java/jdk1.8.0_131/bin/java  -jar zipkin-server-2.21.7-exec.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=localhost:9200 -java.tmp.dir=/opt/zipkin/temp >/dev/null >zipkin.log 2>&1 & echo $! > pidfile.txt 

如果是连接ES集群,--ES_HOSTS通过逗号分割,比如:--ES_HOSTS=http://1.1.1.1:9200,http://2.2.2.2:9200

连接ES参数:

环境变量 描述
ES_HOSTS 连接ES地址,多个由,分隔。默认为http://localhost:9200
ES_PIPELINE 指定span被索引之前的pipeline
ES_TIMEOUT 连接ES的超时时间,单位ms。默认10000(10S)
ES_INDEX Zipkin持久化所使用的索引。默认zipkin
ES_DATE_SEPARATOR Zipkin建立索引的日期分隔符。默认为-
ES_INDEX_SHARDS 分片(shard)个数,默认5个
ES_INDEX_REPLICAS 副本(replica)个数,默认1个
ES_HTTP_LOGGING ES的日志级别,BASIC, HEADERS, BODY
ES_USERNAME/ES_PASSWORD 登录ES的用户名和密码