1、Zipkin簡介
Zipkin是Twitter的一個開源項目,它基於Google Dapper實現。咱們可使用它來收集各個服務器上請求鏈路的跟蹤數據,並經過它提供的REST API接口來輔助咱們查詢跟蹤數據以實現對分佈式系統的監控程序,從而及時地發現系統中出現的延遲升高問題並找出系統性能瓶頸的根源。除了面向開發的API接口以外,它也提供了方便的UI組件來幫助咱們直觀的搜索跟蹤信息和分析請求鏈路明細,好比:能夠查詢某段時間內各用戶請求的處理時間等。java
上圖展現了Zipkin的基礎架構,它主要有4個核心組件構成:spring
- Collector:收集器組件,它主要用於處理從外部系統發送過來的跟蹤信息,將這些信息轉換爲Zipkin內部處理的Span格式,以支持後續的存儲、分析、展現等功能。
- Storage:存儲組件,它主要對處理收集器接收到的跟蹤信息,默認會將這些信息存儲在內存中,咱們也能夠修改此存儲策略,經過使用其餘存儲組件將跟蹤信息存儲到數據庫中。
- RESTful API:API組件,它主要用來提供外部訪問接口。好比給客戶端展現跟蹤信息,或是外接系統訪問以實現監控等。
- Web UI:UI組件,基於API組件實現的上層應用。經過UI組件用戶能夠方便而有直觀地查詢和分析跟蹤信息。
2、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.增長配置信息:app
在application.properties
中作一些簡單配置,好比:設置服務端口號爲9411
(客戶端整合時候,自動化配置會鏈接9411
端口,因此在服務端設置了端口爲9411
的話,客戶端能夠省去這個配置)。分佈式
spring.application.name=zipkin-server server.port=9411
4.訪問http://localhost:9411/
,咱們能夠看到以下圖所示的Zipkin管理頁面:性能
第二步:爲應用引入和配置Zipkin服務測試
在完成了Zipkin Server的搭建以後,咱們還須要對應用作一些配置,以實現將跟蹤信息輸出到Zipkin Server。咱們以以前實現的trace-1
和trace-2
爲例,對它們作如下改造內容:ui
1.在trace-1
和trace-2
的pom.xml
中引入spring-cloud-sleuth-zipkin
依賴,具體以下所示。(spring-cloud-starter-zipkin)
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin</artifactId> </dependency>
2.在trace-1
和trace-2
的application.properties
中增長Zipkin Server的配置信息,具體以下所示(若是在zip-server
應用中,咱們將其端口設置爲9411
,而且均在本地調試的話,該參數也能夠不配置,由於默認值就是http://localhost:9411
)。
spring.zipkin.base-url=http://localhost:9411
測試與分析
到這裏咱們已經完成了接入Zipkin Server的全部基本工做,咱們能夠繼續將eureka-server
、trace-1
和trace-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/