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 的差异有助于您根据项目需求做出最佳选择。以下是对两者的详细对比:

特性ZipkinSkywalking
主要关注分布式追踪应用性能监控(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 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 界面分析延迟和依赖。

参考:

  • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python打卡day25@浙大疏锦行

知识点回顾: 1.异常处理机制 2.debug过程中的各类报错 3.try-except机制 4.try-except-else-finally机制 在即将进入深度学习专题学习前,我们最后差缺补漏,把一些常见且重要的知识点给他们补上,加深对代码和流程的理解。 作业&a…

鸿蒙OSUniApp 开发实时聊天页面的最佳实践与实现#三方框架 #Uniapp

使用 UniApp 开发实时聊天页面的最佳实践与实现 在移动应用开发领域,实时聊天功能已经成为许多应用不可或缺的组成部分。本文将深入探讨如何使用 UniApp 框架开发一个功能完善的实时聊天页面,从布局设计到核心逻辑实现,带领大家一步步打造专…

43、Server.UrlEncode、HttpUtility.UrlDecode的区别?

Server.UrlEncode 和 HttpUtility.UrlDecode 是 .NET 中用于处理 URL 编码/解码的两个不同方法,主要区别在于所属命名空间、使用场景和具体行为。以下是详细对比: 1. 所属类库与命名空间 Server.UrlEncode 属于 System.Web.HttpServerUtility 类。通常…

代码随想录 算法训练 Day1:数组

题目一: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target …

容器技术 20 年:颠覆、重构与重塑软件世界的力量

目录 容器技术发展史 虚拟化技术向容器技术转变 Docker的横空出世 容器编排技术与Kubernetes 微服务的出现与Istio 工业标准的容器运行时 容器技术与 DevOps 的深度融合​ 无服务架构推波助澜 展望未来发展方向 从 20 世纪硬件虚拟化的笨重,到操作系统虚拟…

集成钉钉消息推送功能

1. 概述 本文档详细描述了在若依框架基础上集成钉钉消息推送功能的开发步骤。该功能允许系统向指定钉钉用户发送文本和富文本消息通知。 2. 环境准备 2.1 钉钉开发者账号配置 登录钉钉开发者平台:https://open.dingtalk.com/创建/选择企业内部应用获取以下关键信…

【行为型之访问者模式】游戏开发实战——Unity灵活数据操作与跨系统交互的架构秘诀

文章目录 🧳 访问者模式(Visitor Pattern)深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码(游戏物品系统)1. 定义元素与访问者接口2. 实现具体元素类3. 实现具体访问者4. 对象结构管理5. 客户端使用 …

SQL:MySQL函数:日期函数(Date Functions)

目录 时间是数据的一种类型 🧰 MySQL 常用时间函数大全 🟦 1. 获取当前时间/日期 🟦 2. 日期运算(加减) 🟦 3. 时间差计算 🟦 4. 格式化日期 🟦 5. 提取时间部分 &#x1f7…

【MySQL】数据表更新数据

个人主页:Guiat 归属专栏:MySQL 文章目录 1. 数据更新基础1.1 更新操作的重要性1.2 更新语句基本结构1.3 更新操作注意事项 2. 基本更新操作2.1 基本UPDATE语法2.2 使用表达式更新数据2.3 使用LIMIT限制更新行数2.4 NULL值处理 3. 高级更新技术3.1 使用子…

【更新】全国省市县-公开手机基站数据集(2006-2025.3)

手机基站是现代通信网络中的重要组成部分,它们为广泛的通信服务提供基础设施。随着数字化进程的不断推进,手机基站的建设与布局对优化网络质量和提升通信服务水平起着至关重要的作用,本分享数据可帮助分析移动通信网络的发展和优化。本次数据…

蓝桥杯12届国B 纯质数

题目描述 如果一个正整数只有 1 和它本身两个约数,则称为一个质数(又称素数)。 前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅ 。 如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如&#xff1…

腾讯多模态定制化视频生成框架:HunyuanCustom

HunyuanCustom 速读 一、引言 HunyuanCustom 是由腾讯团队提出的一款多模态定制化视频生成框架。该框架旨在解决现有视频生成方法在身份一致性(identity consistency)和输入模态有限性方面的不足。通过支持图像、音频、视频和文本等多种条件输入,HunyuanCustom 能…

力扣top100 矩阵置零

开辟数组来标记元素为0的行和列&#xff0c;然后将对应的行和列的元素全部置为0&#xff1b; class Solution { public:void setZeroes(vector<vector<int>>& matrix) {int n matrix.size();int m matrix[0].size();vector<int> l(m),r(n);for(int i …

Python知识框架

一、Python基础语法 变量与数据类型 变量命名规则 基本类型&#xff1a;int, float, str, bool, None 复合类型&#xff1a;list, tuple, dict, set 类型转换与检查&#xff08;type(), isinstance()&#xff09; 运算符 算术运算符&#xff1a;, -, *, /, //, %, ** 比较…

华为OD机试真题——单词接龙(首字母接龙)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)

一、系统介绍 本智能商城系统是基于当今主流技术栈开发的一款多端商城解决方案&#xff0c;主要包括微信小程序前端、SpringBoot 后端服务以及 Vue 管理后台三大部分。系统融合了线上商城的核心功能&#xff0c;支持商品浏览、下单、支付、订单管理等操作&#xff0c;适用于中小…

Python笔记:c++内嵌python,c++主窗口如何传递给脚本中的QDialog,使用的是pybind11

1. 问题描述 用的是python 3.8.20, qt版本使用的是5.15.2, PySide的版本是5.15.2, pybind11的版本为2.13.6 网上说在python脚本中直接用PySide2自带的QWinWidget&#xff0c;如from PySide2.QtWinExtras import QWinWidget&#xff0c;但我用的版本中说没有QWinWidget&#x…

软考软件设计师中级——软件工程笔记

1.软件过程 1.1能力成熟度模型&#xff08;CMM&#xff09; 软件能力成熟度模型&#xff08;CMM&#xff09;将软件过程改进分为以下五个成熟度级别&#xff0c;每个级别都定义了特定的过程特征和目标&#xff1a; 初始级 (Initial)&#xff1a; 软件开发过程杂乱无章&#xf…

C# SQLite基本使用示例

目录 1 基本使用流程 1.1 步骤1&#xff1a;添加SQLite依赖 1.2 ​步骤2&#xff1a;建立连接 1.3 步骤3&#xff1a;执行SQL命令 1.4 步骤4&#xff1a;查询数据 1.5 步骤5&#xff1a;使用事务 2 SQLite基本使用示例 2.1 准备工作 2.2 完整示例 2.3 案例代码解析 …

视频图像压缩领域中 DCT 的 DC 系数和 AC 系数详解

引言 在数字图像与视频压缩领域&#xff0c;离散余弦变换&#xff08;Discrete Cosine Transform, DCT&#xff09;凭借其卓越的能量集中特性&#xff0c;成为JPEG、MPEG等国际标准的核心技术。DCT通过将空域信号映射到频域&#xff0c;分离出DC系数&#xff08;直流分量&…