Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking
Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking
分布式追踪工具在现代微服务架构中至关重要,它们帮助开发者监控请求在多个服务之间的流动,识别性能瓶颈和潜在错误。本文将指导您在 Ubuntu 22.04(WSL2 环境)中使用 Docker 安装两种流行的开源追踪工具:Zipkin 和 Skywalking。我们将提供详细的步骤,确保即使是初学者也能轻松完成设置,并对两者进行对比以帮助您选择合适的工具。
什么是 Zipkin 和 Skywalking?
Zipkin
Zipkin 是一个分布式追踪系统,最初由 Twitter 开发,基于 Google Dapper 论文设计。它通过收集服务之间的请求时间数据,帮助开发者分析延迟问题。Zipkin 提供了一个直观的 Web 界面,允许用户根据服务名称、操作名称或追踪 ID 查询追踪数据,并展示服务依赖关系图。Zipkin 支持多种编程语言和框架(如 Java、Go、Python 等),通过 HTTP 或 Kafka 等方式接收数据,默认使用内存存储,但可配置为使用 Cassandra 或 Elasticsearch 等持久化存储。
Skywalking
Skywalking 是一个功能更全面的开源应用性能监控(APM)工具,专为微服务、云原生和容器化架构设计。除了分布式追踪外,它还提供服务拓扑分析、指标监控和日志收集等功能。Skywalking 支持多种语言的代理(如 Java、Python、Go 等),并通过 eBPF 提供 Kubernetes 部署的性能分析。其用户界面提供丰富的仪表板和拓扑图,适合复杂系统的监控。默认使用 H2 内存数据库,但支持 Elasticsearch 等外部存储。
Zipkin 和 Skywalking 的对比
在选择分布式追踪工具时,了解 Zipkin 和 Skywalking 的差异有助于您根据项目需求做出最佳选择。以下是对两者的详细对比:
特性 | Zipkin | Skywalking |
---|---|---|
主要关注 | 分布式追踪 | 应用性能监控(APM),包括追踪、指标监控和日志收集 |
关键功能 | - 收集时序数据以识别延迟问题 - Web UI 支持按服务、操作等查询追踪 - 依赖图展示请求路径和错误 | - 分布式追踪、拓扑分析、性能指标、告警通知 - 支持云原生和容器化架构 - 集成多种生态系统(如 OpenTelemetry) |
仪器化 | 通常需手动仪器化(如使用 Brave 库),部分语言支持自动仪器化代理 | 主要通过代理自动仪器化,无需修改代码 |
存储 | 默认内存存储;支持 Cassandra、Elasticsearch 等 | 默认 H2 内存数据库;支持 Elasticsearch、MySQL、TiDB 等 |
易用性 | 安装简单,适合快速测试和小型项目 | 功能丰富,设置稍复杂,但通过 Docker Compose 管理 |
适用场景 | 小型项目或仅需追踪功能 | 大型复杂系统,需要全面监控 |
选择建议:
- Zipkin:如果您的项目主要需要分布式追踪,且希望部署简单、资源占用低,Zipkin 是理想选择。它适合快速测试或小型微服务架构。
- Skywalking:如果您需要全面的 APM 功能,包括追踪、指标、日志和告警,Skywalking 更适合。它在云原生和复杂系统中表现尤为出色,其自动仪器化功能简化了集成过程。
通过权衡这些因素,您可以选择最适合您项目规模和复杂度的工具。
前提条件
在开始之前,请确保满足以下条件:
- 操作系统:在 Windows 的 WSL2 中运行 Ubuntu 22.04。
- Docker:已安装 Docker,推荐使用 Docker Desktop 配置 WSL2 后端以简化管理。
- 网络:确保端口 9411(Zipkin)、11800、12800(Skywalking OAP)和 13800(Skywalking UI)未被占用。
- 硬件:建议至少 4GB 内存和 2 核 CPU,以确保容器运行顺畅。
验证 Docker 安装
运行以下命令确认 Docker 是否正常工作:
docker --version
应返回类似 Docker version 20.10.0
的输出。
安装 Zipkin
Zipkin 的安装非常简单,只需运行一个 Docker 容器即可。
步骤 1:启动 Zipkin 容器
在终端运行:
docker run -d -p 9411:9411 openzipkin/zipkin
-d
:后台运行容器。-p 9411:9411
:映射容器 9411 端口到主机。openzipkin/zipkin
:官方 Zipkin 镜像,默认使用最新版本。
镜像将从 Docker Hub 拉取,Zipkin 默认使用内存存储。
步骤 2:访问 Zipkin UI
在浏览器中访问 http://localhost:9411,您将看到 Zipkin 的 Web 界面,包括:
- 搜索追踪:按服务名称、操作名称或追踪 ID 查询。
- 依赖图:展示服务调用关系。
- 时间线视图:显示请求耗时。
若无法访问,请检查:
- 运行
docker ps
确认容器状态。 - 确保端口 9411 未被占用,可调整为
-p 9412:9411
。
注意事项
- 存储:内存存储适合测试,生产环境建议配置 Cassandra 或 Elasticsearch。
- 性能:单容器适合测试,生产环境需优化资源分配。
安装 Skywalking
Skywalking 部署需要运行 OAP 服务器和 UI 两个组件。本文使用 Docker Compose 和 H2 内存数据库简化设置。
步骤 1:创建 docker-compose.yml 文件
在工作目录下创建 docker-compose.yml
:
services:oap:image: apache/skywalking-oap-server:10.2.0container_name: oapports:- "11800:11800"- "12800:12800"ui:image: apache/skywalking-ui:10.2.0container_name: uidepends_on:- oapports:- "13800:8080"environment:SW_OAP_ADDRESS: http://oap:12800
oap
:运行 Skywalking OAP 服务器,映射 11800(gRPC)和 12800(HTTP)端口。ui
:运行 Skywalking UI,依赖 OAP,映射容器 8080 端口到主机 13800。SW_OAP_ADDRESS
:配置 UI 连接 OAP。
注意:Skywalking UI 使用 13800 端口而非默认 8080,因为 8080 在开发中常被 web 服务器(如 Tomcat)占用。为避免冲突,选择不常用的 13800 端口。您可根据需要调整为其他可用端口。
步骤 2:启动 Skywalking 服务
在文件目录运行:
docker-compose up -d
Docker 将拉取镜像并启动容器。
步骤 3:访问 Skywalking UI
在浏览器访问 http://localhost:13800,您将看到 Skywalking 界面,包括:
- 仪表板:展示性能指标。
- 拓扑图:显示服务依赖。
- 追踪视图:展示请求调用链。
- 告警:配置异常通知。
若无法访问,请检查:
- 运行
docker-compose ps
确认容器状态。 - 查看日志:
docker logs oap
或docker logs ui
。 - 确保端口 13800 未被占用,可调整为其他端口。
注意事项
- 存储:H2 内存数据库适合测试,生产环境建议配置 Elasticsearch。
- 版本一致性:OAP 和 UI 需使用相同版本(10.2.0)。
- WSL2 网络:若 localhost 访问失败,可使用 WSL2 IP(运行
wsl hostname -I
获取)。
WSL2 环境中的注意事项
在 WSL2 中运行 Docker 有以下考虑:
-
端口映射:WSL2 自动映射端口到 Windows localhost,但防火墙可能需允许相关端口。
-
资源分配:WSL2 默认资源有限,可在
.wslconfig
配置:[wsl2] memory=4GB processors=2
保存后运行
wsl --shutdown
重启 WSL2。
-
端口冲突:
确保以下端口未被占用:- Zipkin:9411
- Skywalking OAP:11800、12800
- Skywalking UI:13800
若冲突,可调整端口映射。
下一步
安装完成后,需集成代理以发送追踪数据:
- 配置代理:为应用添加 Zipkin(如 Brave)或 Skywalking 代理。
- 发送数据:通过 HTTP、gRPC 或 Kafka 发送数据到 Zipkin(9411)或 Skywalking(11800)。
- 分析追踪:使用 Web 界面分析延迟和依赖。
参考:
- Zipkin 快速入门
- Skywalking 文档
结论
您已成功在 Ubuntu 22.04(WSL2)上部署了 Zipkin 和 Skywalking。Zipkin 适合轻量级追踪,Skywalking 提供全面 APM 功能。本文使用内存存储简化设置,生产环境建议配置持久化存储以确保数据持久性。
关键引用
- Zipkin Official Quickstart Guide
- Skywalking Backend Setup Documentation
- Docker Hub Zipkin Image Page
- Docker Hub Skywalking OAP Server Image Page
- Docker Hub Skywalking UI Image Page
- SourceForge Apache SkyWalking vs. Zipkin Comparison
- Logz.io Distributed Tracing Tools and Standards