前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【教程分享】Docker搭建Zipkin,实现数据持久化到MySQL、ES

【教程分享】Docker搭建Zipkin,实现数据持久化到MySQL、ES

作者头像
JavaEdge
发布2023-08-28 08:12:07
7940
发布2023-08-28 08:12:07
举报
文章被收录于专栏:JavaEdgeJavaEdge

1 拉取镜像

指定版本,在git查看相应版本,参考: https://github.com/openzipkin/zipkin

如2.21.7

代码语言:javascript
复制
docker pull openzipkin/zipkin:2.21.7

2 启动

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

代码语言:javascript
复制
docker run --name zipkin-server -d --restart=always -p 9411:9411 openzipkin/zipkin:2.21.7
  • --restart=always 可以让容器在退出后自动重启,保证可用性
  • -p 9411:9411 是端口映射,将容器内部默认的 9411 端口映射到宿主机的 9411 端口,方便访问
  • 指定镜像版本号 openzipkin/zipkin:2.21.7 是个好习惯,避免使用默认 latest 标签导致不可控的问题
  • 如果需要调整配置,可以使用 -e 参数设置环境变量,例如:-e JAVA_OPTS="-Xms512m -Xmx512m" 来控制 Zipkin 的内存
  • 数据默认存放在内存中,建议通过 -v 参数映射卷持久化数据,避免重启后丢失

3 访问测试

访问链接:http://localhost:9411/zipkin/

image-20230827204323093
image-20230827204323093

4 Web UI

请求列表:

image-20230827205247092
image-20230827205247092

点击第一项,看看详情页。

AUTH-SERVICE: get /error 入库服务名称及请求方式

image-20230827205413561
image-20230827205413561

5 持久化

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

持久化需注意MySQL/ES版本,在https://github.com/openzipkin/zipkin,可查看:

ES组件使用Elasticsearch 5+的功能,但已测试过与Elasticsearch 6-7.x的兼容性。

它将spans存储为Zipkin v2 json,以便与其他工具集成。为扩展,它使用自定义和手动实现的索引组合。

注意:这个存储需要一个Spark job来聚合依赖链接。

5.1 MySQL持久化

① 建数据库

如zipkin

② 建表

语句参考:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

③ 修改启动命令

Zipkin默认端口9411。

启动时通过-e server.port=xxxx设置指定端口

代码语言:javascript
复制
docker run \
--name zipkin-server -d \
--restart=always \
-p 9411:9411 \
-e MYSQL_USER=root \
-e MYSQL_PASS=lhzlx \
-e MYSQL_HOST=111.229.160.175 \
-e STORAGE_TYPE=mysql \
-e MYSQL_DB=zipkin \
-e MYSQL_TCP_PORT=3316 \
openzipkin/zipkin:2.21.7
④ 验证

启动zipkin-server并请求,再次重启zipkin-server,可见依然存在请求链路录记录,并且MySQL表中存在记录。

5.2 ES持久化

无需建立啥配置信息,只需启动jar时指定ES地址。

将脚本中的启动命令修改为:

代码语言:javascript
复制
docker run \
--name zipkin-server -d \
-p 9411:9411 \
--restart=always \
-e STORAGE_TYPE=elasticsearch \
-e ES_HOSTS=localhost:9200
openzipkin/zipkin:2.21.7

若连接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的用户名和密码

本文由博客一文多发平台 OpenWrite 发布!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 拉取镜像
  • 2 启动
  • 3 访问测试
  • 4 Web UI
  • 5 持久化
    • 5.1 MySQL持久化
      • ① 建数据库
      • ② 建表
      • ③ 修改启动命令
      • ④ 验证
    • 5.2 ES持久化
      • 连接ES参数
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档