SpringCloud Sleuth+Zipkin

来源:https://www.cnblogs.com/chy18883701161/archive/2020/05/01/12814359.html
-Advertisement-
Play Games

Sleuth+Zipkin用來實現分散式系統的鏈路追蹤。 Sleuth組件用於日誌埋點、記錄鏈路數據,Zipkin組件用於展示鏈路數據。 Sleuth的使用 (1)創建消費者、提供者時勾選Spring Cloud Tracing -> Sleuth 也可以手動添加依賴: <dependency> < ...


 

Sleuth+Zipkin用來實現分散式系統的鏈路追蹤。

Sleuth組件用於日誌埋點、記錄鏈路數據,Zipkin組件用於展示鏈路數據。

 

 


 

 

Sleuth的使用

(1)創建消費者、提供者時勾選Spring Cloud Tracing -> Sleuth

也可以手動添加依賴:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>

 

 

(2)在消費者、提供者處理業務的類中添加成員變數

//使用的是slf4j的日誌,不要導錯了
private final Logger logger = LoggerFactory.getLogger(this.getClass());

 

在處理業務的方法中(消費者調用提供者、提供者處理業務的方法中),輸出日誌

logger.info("正在執行user-service的findOrdersByUserId方法,調用服務order-service");

內容根據需要修改。

 

 

Sleuth輸出的日誌往往是空的,只輸出服務名:[order-service,,,]

第(2)步是為瞭解決此問題,使Sleuth輸出的日誌有內容。

 

[order-service,cd99e95b12d13310,b6e08d7f788441bf,false]

  • 第一個是spring.application.name,服務名
  • 第二個是sleuth生成的Trace ID,唯一標識一條請求鏈路
  • 第三個是sleuth生成的Span ID,Span ID是鏈路的基本單元,標識一個http請求的元數據,比如一個服務調用產生的http請求。1條鏈路中包含1個Trace ID、多個Span ID。
  • 第四個表示是否會將該信息傳輸到zipkin服務中收集、展示,配置了zipkin就是true,沒配置就是false

 

 

 


 

  

 

zipkin的使用

zipkin是大規模分散式系統的一個APM工具(Application Performance Management),基於Google Dapper實現,搭配sleuth可以實現可視化的鏈路調用分析。

APM工具常用的還有EagleEye 鷹眼、CAT。

 

zipkin組成:Collector、Storage、Restful API、Web UI組成。

 

 

(1)搭建zipkin伺服器

https://zipkin.io/pages/quickstart.html   提供的方式下載速度都很慢,不推薦

 

到下麵的地址直接下載編譯打包好的jar,下載的是最新版的zipkin:

https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec

 

zipkin是springboot項目,運行jar需要jdk環境,如果沒有配置jdk環境的需要先配置jdk環境。

雙擊jar運行(在Linux上可以使用java  -jar命令來運行),瀏覽器地址欄輸入 127.0.0.1:9411 進入zipkin頁面,ip是zipkin所在機器的ip,zipkin預設使用的埠時9411。

 

 

(2)創建消費者、生產者時勾選Spring Cloud Tracing -> Zipkin Client

也可以手動加依賴:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>

 

 

(3)在消費者、提供者中添加配置

spring:
  application:
    #服務名稱
    name: order-service
  zipkin:
    #zipkin伺服器的地址,sleuth會將鏈路數據傳輸到zipkin伺服器,預設是localhost:9411
    base-url: 192.168.1.9:9411
  sleuth:
    sampler:
      #採樣率,0-1上的小數,比如0.5是將sleuth 50%的鏈路的數據傳輸給zipkin
      probability: 1.0

採樣率以前我搞的時候預設是0.1,現在的預設值似乎好像是1.0(不確定),開發的時候可以設置大些,上線的時候設置小些,

因為採樣太多很占網路帶寬,而且zipkin把採樣的鏈路數據直接存儲在記憶體中(定時清理),採樣率太高zipkin伺服器會很占機器記憶體。

 

 

啟動應用,調用服務,在zipkin頁面可看到鏈路各部分的耗時情況,優化耗時多的部分,比如加多線程、非同步、緩存。

 


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

-Advertisement-
Play Games
更多相關文章
  • flex 佈局: 水平主軸:水平主軸開始位置到結束位置 垂直交叉軸:垂直交叉軸開始位置到結束位置 flex佈局屬性: flex佈局屬性: 屬性名稱 屬性值 解釋 備註 flex-direction(伸縮流方向) row 按行排列 從左到右 row-reverse 按行反向排列 從右到左 column ...
  • 六大設計原則 單一職責 定義 每個類都應該有一個單一的功能 一個類或者模塊應該有且只有一個改變的原因 規範 定義類的方法 避免類之間耦合度太高 里氏替換 定義 只要有父類出現的地方,都可以用子類來替代 規範 不要破壞繼承體系 增加子類的時候系統可以正常執行 依賴倒置原則 定義 高層模塊不應該依賴底層 ...
  • OO第二階段(5-8周)PTA作業總結 0.前言 本次博客針對的是PTA第二階段的作業,這次作業相比於第一階段來講難度、思維高度都提高了很多,耗費的精力和時間也很多但是收穫很大;這次作業很大一部分難點及側重點是在正則表達式上,這一部分確實難學,你要對程式的需求分析精準,不斷修改正則才能達到預期結果; ...
  • 前言 併發編程是java中不可或缺的模塊。與串列程式相比,它們能使複雜的非同步代碼變得簡單,從而極大地簡化了複雜系統的開發。此外,想要充分發揮多處理器系統的強大計算能力,最簡單的方式就是使用線程。隨著處理器數量的持續增長,如何高效地使用蝙蝠正變得越來越重要。同時在當今互聯網的時代,大量的互聯網應用都面 ...
  • 使用自定義視圖解析器: 配置自定義視圖跳轉: 通過配置擴展 SpringMVC: ...
  • 1. JPA核心API對象 1.1.Persistence持久化對象 Persisitence主要用於創建EntityMangerFactory,它可以根據傳入的持久化單元名稱來創建對應的EntityMangerFactory。 // 對應配置文件裡面的persistence-unit name=" ...
  • Springboot登錄攔截器 和 swagger框架介面自動生成html文檔 使用開發工具:IDEA 實現步驟如下 1.需導入的依賴如下: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifa ...
  • 這個問題比較常見了,一般是在第一次上傳項目到github或者gitee上會出現。 以前將項目上傳到github的時候出現這個問題,百般查找,找到一個好用的解決辦法,依次輸入以下命令: git pull git pull origin master git pull origin master --a ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...