Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking

发布于:2025-05-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

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.0
    container_name: oap
    ports:
      - "11800:11800"
      - "12800:12800"
  ui:
    image: apache/skywalking-ui:10.2.0
    container_name: ui
    depends_on:
      - oap
    ports:
      - "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 oapdocker 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
      若冲突,可调整端口映射。

下一步

安装完成后,需集成代理以发送追踪数据:

  1. 配置代理:为应用添加 Zipkin(如 Brave)或 Skywalking 代理。
  2. 发送数据:通过 HTTP、gRPC 或 Kafka 发送数据到 Zipkin(9411)或 Skywalking(11800)。
  3. 分析追踪:使用 Web 界面分析延迟和依赖。

参考:

结论

您已成功在 Ubuntu 22.04(WSL2)上部署了 Zipkin 和 Skywalking。Zipkin 适合轻量级追踪,Skywalking 提供全面 APM 功能。本文使用内存存储简化设置,生产环境建议配置持久化存储以确保数据持久性。

关键引用


网站公告

今日签到

点亮在社区的每一天
去签到