当前位置: > > > Zipkin服务端搭建使用教程2(使用MySQL储存数据)

Zipkin服务端搭建使用教程2(使用MySQL储存数据)

    默认情况下,Zipkin Server 都会将跟踪信息存储在内存中,每次重启 Zipkin Server 都会使得之前收集的跟踪信息丢失,而且当有大量跟踪信息时我们的内存存储也会成为瓶颈。
    所有正常情况下我们都需要将跟踪信息对接到外部存储组件(比如 MySQLElasticsearch)中去。本文首先介绍如何使用 MySQL 实现 Zipkin 的数据持久化。

二、使用 MySQL 存储数据

1,数据库初始化

(1)首先在 MySQL 中创建一个名为 zipkin 的数据库,编码使用 utf8

(2)接着从官方的 GitHub 仓库中下载初始化 sql 语句,然后执行创建表结构(一共三张表)。下载地址如下:

2,启动 Zipkin 服务

(1)Zipkin 启动时只需要指定好 MySql 连接信息即可。如果是通过 jar 包运行,则执行如下命令:
java -jar zipkin-server-2.19.3-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=192.168.60.1 --MYSQL_TCP_PORT=3306 --MYSQL_USER=root --MYSQL_PASS=hangge1234 --MYSQL_DB=zipkin

(2)如果通过 Docker 镜像运行,则执行如下命令:
docker run --name zipkin -d -p 9411:9411 -e STORAGE_TYPE=mysql -e MYSQL_HOST=192.168.60.1 -e MYSQL_TCP_PORT=3306 -e MYSQL_USER=root -e MYSQL_PASS=hangge1234 -e MYSQL_DB=zipkin openzipkin/zipkin

(3)如果每次都要使用 docker 命令来分别启动 zipkin 容器还是略显繁琐,我们也可以通过 Docker Compose 进行启动,docker-compose.yml 文件内容如下:
version: '2'

services:
zipkin:
image: openzipkin/zipkin
container_name: zipkin
environment:
- STORAGE_TYPE=mysql
- MYSQL_HOST=192.168.60.1
- MYSQL_TCP_PORT=3306
- MYSQL_USER=root
- MYSQL_PASS=hangge1234
- MYSQL_DB=zipkin
#- RABBIT_ADDRESSES=192.168.60.133:5672
#- RABBIT_USER=hangge
#- RABBIT_PASSWORD=123
ports:
- 9411:9411

3,运行测试

    通过上面的设置之后,我们完成了将 Zipkin Server 从内存存储跟踪信息切换为 MySQL 存储信息的改造。后续所有的跟踪信息都会存放在 MySQL 相应的表中。
  • zipkin_spans 表存放类似如下数据信息:

  • zipkin_annotations 表存放类似如下数据信息:
评论0