1. 程式人生 > >十二、springcloud之展示追蹤數據 Sleuth+zipkin

十二、springcloud之展示追蹤數據 Sleuth+zipkin

圖片 rgs 用戶 ati 請求 sta ring zip 設置

一、Zipkin簡介

  Zipkin是Twitter的一個開源項目,它基於Google Dapper實現。我們可以使用它來收集各個服務器上請求鏈路的跟蹤數據,並通過它提供的REST API接口來輔助我們查詢跟蹤數據以實現對分布式系統的監控程序,從而及時地發現系統中出現的延遲升高問題並找出系統性能瓶頸的根源。除了面向開發的API接口之外,它也提供了方便的UI組件來幫助我們直觀的搜索跟蹤信息和分析請求鏈路明細,比如:可以查詢某段時間內各用戶請求的處理時間等。

技術分享圖片

上圖展示了Zipkin的基礎架構,它主要有4個核心組件構成:

  • Collector:收集器組件,它主要用於處理從外部系統發送過來的跟蹤信息,將這些信息轉換為Zipkin內部處理的Span格式,以支持後續的存儲、分析、展示等功能。
  • Storage:存儲組件,它主要對處理收集器接收到的跟蹤信息,默認會將這些信息存儲在內存中,我們也可以修改此存儲策略,通過使用其他存儲組件將跟蹤信息存儲到數據庫中。
  • RESTful API:API組件,它主要用來提供外部訪問接口。比如給客戶端展示跟蹤信息,或是外接系統訪問以實現監控等。
  • Web UI:UI組件,基於API組件實現的上層應用。通過UI組件用戶可以方便而有直觀地查詢和分析跟蹤信息。

二、Sleuth與Zipkin的基礎整合

第一步:搭建Zipkin Server

  1.創建一個基礎的Spring Boot應用,命名為zipkin-server,並在pom.xml中引入Zipkin Server的相關依賴,具體如下:

<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>

  2.創建應用主類ZipkinApplication

,使用@EnableZipkinServer註解來啟動Zipkin Server,具體如下:

@EnableZipkinServer
@SpringBootApplication
public class ZipkinApplication {

  public static void main(String[] args) {
      SpringApplication.run(ZipkinApplication.class, args);
  }

}

  3.增加配置信息:

    在application.properties中做一些簡單配置,比如:設置服務端口號為9411(客戶端整合時候,自動化配置會連接9411端口,所以在服務端設置了端口為9411的話,客戶端可以省去這個配置)。

spring.application.name=zipkin-server
server.port=9411

  4.訪問http://localhost:9411/,我們可以看到如下圖所示的Zipkin管理頁面:

技術分享圖片

第二步:為應用引入和配置Zipkin服務

  在完成了Zipkin Server的搭建之後,我們還需要對應用做一些配置,以實現將跟蹤信息輸出到Zipkin Server。我們以之前實現的trace-1trace-2為例,對它們做以下改造內容:

    1.在trace-1trace-2pom.xml中引入spring-cloud-sleuth-zipkin依賴,具體如下所示。(spring-cloud-starter-zipkin)

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

    2.在trace-1trace-2application.properties中增加Zipkin Server的配置信息,具體如下所示(如果在zip-server應用中,我們將其端口設置為9411,並且均在本地調試的話,該參數也可以不配置,因為默認值就是http://localhost:9411)。

spring.zipkin.base-url=http://localhost:9411

測試與分析

到這裏我們已經完成了接入Zipkin Server的所有基本工作,我們可以繼續將eureka-servertrace-1trace-2啟動起來,然後我們做一些測試實驗,以對它的運行機制有一些初步的理解。

我們先來向trace-1的接口發送幾個請求:http://localhost:9101/trace-1,當我們在日誌中出現跟蹤信息的最後一個值為true的時候,說明該跟蹤信息會輸出給Zipkin Server,所以此時我們可以去Zipkin Server的管理頁面中選擇合適的查詢條件後,點擊Find Traces,就可以查詢出剛才在日誌中出現的跟蹤信息了(也可以根據日誌中的Trace ID,在頁面的右上角輸入框中來搜索),具體如下頁面所示:

技術分享圖片

點擊下方trace-1端點的跟蹤信息,我們還可以得到Sleuth收集到的跟蹤到詳細信息,其中包括了我們關註的請求時間消耗等。

技術分享圖片

點擊導航欄中的Dependencies菜單,我們還可以查看Zipkin Server根據跟蹤信息分析生成的系統請求鏈路依賴關系圖:

技術分享圖片

轉自:http://blog.didispace.com/spring-cloud-starter-dalston-8-4/

十二、springcloud之展示追蹤數據 Sleuth+zipkin