1. 程式人生 > >系統監控-Zipkin和微服務鏈路跟蹤

系統監控-Zipkin和微服務鏈路跟蹤

1. 什麼是Zipkin?

Zipkin分散式跟蹤系統;它可以幫助收集時間資料,解決在microservice架構下的延遲問題;它管理這些資料的收集和查詢;Zipkin的設計是基於谷歌的Google Dapper論文。
每個應用程式向Zipkin報告定時資料,Zipkin UI呈現了一個依賴圖表來展示多少跟蹤請求經過了每個應用程式;如果想解決延遲問題,可以過濾或者排序所有的跟蹤請求,並且可以檢視每個跟蹤請求佔總跟蹤時間的百分比。

2. 為什麼要使用Zipkin?

隨著業務越來越複雜,系統也隨之進行各種拆分,特別是隨著微服務架構和容器技術的興起,看似簡單的一個應用,後臺可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務呼叫最後才能完成;當請求變慢或者不可用時,我們無法得知是哪個後臺服務引起的,這時就需要解決如何快速定位服務故障點,Zipkin分散式跟蹤系統就能很好的解決這樣的問題。

3. Zipkin下載和啟動

下載地址:連結:https://pan.baidu.com/s/14gNWGsoabGSatvGmuU8OVg 提取碼:vbdt 
使用步驟:

  • 下載zipkin-server-2.11.1-exec.jar
  • 新建zipkin DB並匯入SQL指令碼
  • 執行jar,啟動Zipkin Server(這裡使用的是MySQL,推薦使用ES)
java -jar zipkin-server-2.11.1-exec.jar --STORAGE_TYPE=mysql --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=root --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306
  • 在需要監控的SpringBoot模組中,新建TracingConfiguration類並在application.properties配置如下屬性
zipkin.url = http://localhost:9411/api/v2/spans
dubbo.consumer.filter=tracing

參考部落格:

  • https://blog.csdn.net/qq_27384769/article/details/84965170
  • https://segmentfault.com/a/1190000012342007

4. 總結:

通過Zipkin Web端的分散式多系統的鏈式最終,可以更好的瞭解系統與系統之間的互動、系統間互動過程中每一個系統都耗時多久,方便我們更好的分析出系統的瓶頸以便於水平的擴充套件(多部署幾個例項、做負載)或優化程式碼等等,與之前系統監控-分散式呼叫鏈Skywalking對比,各有優缺點。

Skywalking:

能監控除系統互動外還可以監控到中介軟體和資料庫,程式碼侵入性低,支援jar和war方式,但我是用它監控SpringBoot jar專案卻抓取不到資料,目前發現有一部分應用沒法正確的支援(待進一步核對..)。

Zipkin:

使用方式簡單,需要和SpringBoot 專案整合,程式碼侵入性高,只能監控服務於服務之前的呼叫鏈和每個子系統呼叫所耗時