SpringCloud Sleuth+Zipkin 分布式鏈路追蹤


 

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頁面可看到鏈路各部分的耗時情況,優化耗時多的部分,比如加多線程、異步、緩存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM