【教程分享】Docker搭建Zipkin,實現數據持久化到MySQL、ES

来源:https://www.cnblogs.com/JavaEdge/archive/2023/08/27/17660870.html
-Advertisement-
Play Games

## 1 拉取鏡像 指定版本,在git查看相應版本,參考: https://github.com/openzipkin/zipkin 如2.21.7 ```bash docker pull openzipkin/zipkin:2.21.7 ``` ## 2 啟動 Zipkin預設埠為9411。啟動 ...


1 拉取鏡像

指定版本,在git查看相應版本,參考: https://github.com/openzipkin/zipkin

如2.21.7

docker pull openzipkin/zipkin:2.21.7

2 啟動

Zipkin預設埠為9411。啟動時通過-e server.port=xxxx設置指定埠

docker run --name zipkin-server -d --restart=always -p 9411:9411 openzipkin/zipkin:2.21.7
  • --restart=always 可以讓容器在退出後自動重啟,保證可用性
  • -p 9411:9411 是埠映射,將容器內部預設的 9411 埠映射到宿主機的 9411 埠,方便訪問
  • 指定鏡像版本號 openzipkin/zipkin:2.21.7 是個好習慣,避免使用預設 latest 標簽導致不可控的問題
  • 如果需要調整配置,可以使用 -e 參數設置環境變數,例如:-e JAVA_OPTS="-Xms512m -Xmx512m" 來控制 Zipkin 的記憶體
  • 數據預設存放在記憶體中,建議通過 -v 參數映射捲持久化數據,避免重啟後丟失

3 訪問測試

訪問鏈接:http://localhost:9411/zipkin/

image-20230827204323093

4 Web UI

請求列表:

image-20230827205247092

點擊第一項,看看詳情頁。

AUTH-SERVICE: get /error 入庫服務名稱及請求方式

image-20230827205413561

5 持久化

Zipkin Server預設將追蹤數據信息保存到記憶體,重啟服務後追蹤數據將不存在,Zipkin支持將追蹤數據持久化到MySQL或ES。

持久化需註意MySQL/ES版本,在https://github.com/openzipkin/zipkin,可查看:

ES組件使用Elasticsearch 5+的功能,但已測試過與Elasticsearch 6-7.x的相容性。

它將spans存儲為Zipkin v2 json,以便與其他工具集成。為擴展,它使用自定義和手動實現的索引組合。

註意:這個存儲需要一個Spark job來聚合依賴鏈接。

5.1 MySQL持久化

① 建資料庫

如zipkin

② 建表

語句參考:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

③ 修改啟動命令

Zipkin預設埠9411。

啟動時通過-e server.port=xxxx設置指定埠

docker run \
--name zipkin-server -d \
--restart=always \
-p 9411:9411 \
-e MYSQL_USER=root \
-e MYSQL_PASS=lhzlx \
-e MYSQL_HOST=111.229.160.175 \
-e STORAGE_TYPE=mysql \
-e MYSQL_DB=zipkin \
-e MYSQL_TCP_PORT=3316 \
openzipkin/zipkin:2.21.7

④ 驗證

啟動zipkin-server並請求,再次重啟zipkin-server,可見依然存在請求鏈路錄記錄,並且MySQL表中存在記錄。

5.2 ES持久化

無需建立啥配置信息,只需啟動jar時指定ES地址。

將腳本中的啟動命令修改為:

docker run \
--name zipkin-server -d \
-p 9411:9411 \
--restart=always \
-e STORAGE_TYPE=elasticsearch \
-e ES_HOSTS=localhost:9200
openzipkin/zipkin:2.21.7

若連接ES集群,--ES_HOSTS通過逗號分割,如:--ES_HOSTS=http://1.1.1.1:9200,http://2.2.2.2:9200

連接ES參數

環境變數 描述
ES_HOSTS 連接ES地址,多個由逗號分隔。預設為http://localhost:9200
ES_PIPELINE 指定span被索引之前的pipeline
ES_TIMEOUT 連接ES的超時時間,單位ms。預設為10000(10S)
ES_INDEX Zipkin持久化所使用的索引。預設為zipkin
ES_DATE_SEPARATOR Zipkin建立索引的日期分隔符。預設為-
ES_INDEX_SHARDS 分片(shard)個數,預設為5個
ES_INDEX_REPLICAS 副本(replica)個數,預設為1個
ES_HTTP_LOGGING ES的日誌級別,可選值為BASIC, HEADERS, BODY
ES_USERNAME/ES_PASSWORD 登錄ES的用戶名和密碼

本文由博客一文多發平臺 OpenWrite 發佈!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 前言: 單例模式是創建型模式5種中的第1種,**關註對象的創建, 保證一個類僅有一個實例,並且提供一個全局訪問點**。在軟體系統中,經常有這樣一些特殊的類,必須保證它們在系統中只存在一個實例,才能確保它們的邏輯正確性、以及良好的效率。如何繞過常規的構造器,提供一種機制來保證一個類只創建一個實例 ...
  • ## 一、設計模式概述: ​ **設計模式(Design pattern)**代表了最佳的實踐,通常被有經驗的面向對象的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。是一套被反覆使用的、多 ...
  • 一、 ManualResetEvent ManualResetEvent是一個同步對象,可以使一個或多個線程等待另一個線程的信號,然後再同時繼續執行。它是通過兩個狀態來實現的:有信號和無信號。 以下是ManualResetEvent的各個方法的介紹: Set方法:將ManualResetEvent的 ...
  • S905L3A(M401A)拆解, 運行EmuELEC和Armbian. S905Lx系列屬於大客戶版本, 對外沒有公開資料, 最早的 S905L/S905LB 是 S905X 的馬甲, 而這個 S905L3A/S905L3AB 則是 S905X2 的馬甲, 因為在性能評測里這兩個U的得分幾乎一樣.... ...
  • 功能 設計一個傳送帶系統,能夠實現傳送帶的開始/停止,正轉/反轉,加減速,對傳送帶的物品計數。 按鈕/app功能控制,oled屏幕/app顯示。 設計框圖 原理圖 軟體構建階段 利用STM32CubeMX生成模板 MCU選型:STM32F103C8T6,雙擊打開。 Ststem Core->SYS: ...
  • # 背景 再很多場景中,我們可能想在子組件中修改父組件的數據,但事實上,vue不推薦我們這麼做,因為數據的修改不容易溯源。 ## Vue2寫法 在vue2中,我們使用`.sync`修飾符+自定義事件`'update:xxx'`,來使父子組件數據同步。 ```html // 父組件 我是父組件,我有{ ...
  • [系列文章目錄和關於我](https://www.cnblogs.com/cuzzz/p/16609728.html) ## 零丶引入 在[Netty源碼學習2——NioEventLoop的執行](https://www.cnblogs.com/cuzzz/p/17641482.html)中,我們學 ...
  • ## 1.1 註釋 **作用**:在代碼中加一些說明和解釋,方便自己或其他程式員程式員閱讀代碼 **兩種格式** 1. **單行註釋**:`// 描述信息` - 通常放在一行代碼的上方,或者一條語句的末尾,==對該行代碼說明== 2. **多行註釋**: `/* 描述信息 */` - 通常放在一段代 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...