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.pswp.cn/bicheng/81068.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81068.shtml
英文地址,請注明出處:http://en.pswp.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;直流分量&…