Zipkin 服务搭建有多种方式:使用官方提供了可直接启动的 Jar 包,通过 Docker 镜像运行,或者自己手动添加依赖创建 Zipkin 服务器应用。
不过到了 spring-boot 2.0 后官方就不推荐自己通过手动添加依赖创建 Zipkin 服务器应用了。所以本文主要介绍前面两种方式。
一、基本介绍
1,什么是 Zipkin?
(1)Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现。可以用来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高的问题,找出系统性能瓶颈的根源。
(2)除了面向开发的 API 接口之外,它也提供了方便的 UI 组件来帮助我们直观地搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。
2,Zipkin 基础架构
下图展示了 Zipkin 的基础架构,它主要由 4 个核心组件构成:
- Collector:收集器组件,它主要用于处理从外部系统发送过来的跟踪信息,将这些信息转换为 Zipkin 内部处理的 Span 格式,以支持后续的存储、分析、展示等功能。
- Storage:存储组件,它主要对处理收集器接收到的跟踪信息,默认会将这些信息存储在内存中,我们也可以修改此存储策略,通过使用其他存储组件将跟踪信息存储到数据库中。
- RESTful API:API 组件,它主要用来提供外部访问接口。比如给客户端展示跟踪信息,或是外接系统访问以实现监控等。
- Web UI:UI 组件,基于 API 组件实现的上层应用。通过 UI 组件用户可以方便而有直观地查询和分析跟踪信息。java项目www.fhadmin.org
二、通过 Jar 包运行
1,下载 jar 包
(1)首先我们访问官方提供的 Jar 包下载页面(https://dl.bintray.com/openzipkin/maven/io/zipkin/zipkin-server/)java项目www.fhadmin.org:
(2)选择 exec.jar 结尾的 jar 下载即可:
2,运行 jar 包
(1)下载后执行如下命令启动服务,默认端口为 9411
1 |
|
(2)或者我们也可以执行如下命令将 Zipkin 服务作为守护进程后台运行:
1 |
|
(3)启动后通过浏览器访问 http://IP:9411,则可以看到如下图所示的 Zipkin 管理页面:
3,参数设置
(1)如果需要改用其他端口(比如 8888),则可以执行如下命令启动服务:
1 |
|
(2)如果想让 Zipkin 服务端能够从消息中间件(比如 RabbitMQ)java项目www.fhadmin.org获取跟踪信息,可以执行如下命令启动服务:
|
(3)启动后查看 RabbitMq Web 控制台的 Queues 选项,可以看到创建了一个名为 zipkin 的队列,也是 Zipkin 默认的监听队列:
三、通过 Docker 镜像运行
1,下载镜像
执行如下命令拉取镜像到本地:
1 |
|
2,运行容器
(1)镜像下载后执行如下命令运行,服务端口为 9411
1 |
|
(2)如果想让 Zipkin 服务端能够从消息中间件(比如 RabbitMQ)获取跟踪信息,可以执行如下命令运行容器:
1 |
|
(3)如果每次都要使用 docker 命令来分别启动 zipkin 容器还是略显繁琐,我们也可以通过 Docker Compose 进行启动,docker-compose.yml 文件内容如下:
version: '2' services: zipkin: image: openzipkin/zipkin container_name: zipkin environment: - RABBIT_ADDRESSES=192.168.60.133:5672 - RABBIT_USER=hangge - RABBIT_PASSWORD=123 ports: - 9411:9411