Spring Cloud Sleuth:分佈式請求鏈路跟蹤

SpringBoot實戰電商項目mall(20k+star)地址:github.com/macrozheng/…java

摘要

Spring Cloud Sleuth 是分佈式系統中跟蹤服務間調用的工具,它能夠直觀地展現出一次請求的調用過程,本文將對其用法進行詳細介紹。git

Spring Cloud Sleuth 簡介

隨着咱們的系統愈來愈龐大,各個服務間的調用關係也變得愈來愈複雜。當客戶端發起一個請求時,這個請求通過多個服務後,最終返回告終果,通過的每個服務都有可能發生延遲或錯誤,從而致使請求失敗。這時候咱們就須要請求鏈路跟蹤工具來幫助咱們,理清請求調用的服務鏈路,解決問題。github

給服務添加請求鏈路跟蹤

咱們將經過user-service和ribbon-service之間的服務調用來演示該功能,這裏咱們調用ribbon-service的接口時,ribbon-service會經過RestTemplate來調用user-service提供的接口。spring

  • 首先給user-service和ribbon-service添加請求鏈路跟蹤功能的支持;bash

  • 在user-service和ribbon-service中添加相關依賴:app

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
複製代碼
  • 修改application.yml文件,配置收集日誌的zipkin-server訪問地址:
spring:
 zipkin:
 base-url: http://localhost:9411
 sleuth:
 sampler:
 probability: 0.1 #設置Sleuth的抽樣收集機率
複製代碼

整合Zipkin獲取及分析日誌

Zipkin是Twitter的一個開源項目,能夠用來獲取和分析Spring Cloud Sleuth 中產生的請求鏈路跟蹤日誌,它提供了Web界面來幫助咱們直觀地查看請求鏈路跟蹤信息。elasticsearch

  • SpringBoot 2.0以上版本已經不須要自行搭建zipkin-server,咱們能夠從該地址下載zipkin-server:repo1.maven.org/maven2/io/z…maven

  • 下載完成後使用如下命令運行zipkin-server:分佈式

java -jar zipkin-server-2.12.9-exec.jar
複製代碼

  • 啓動eureka-sever,ribbon-service,user-service:

  • 屢次調用(Sleuth爲抽樣收集)ribbon-service的接口http://localhost:8301/user/1 ,調用完後查看Zipkin首頁發現已經有請求鏈路跟蹤信息了;

  • 點擊查看詳情能夠直觀地看到請求調用鏈路和經過每一個服務的耗時:

使用Elasticsearch存儲跟蹤信息

若是咱們把zipkin-server重啓一下就會發現剛剛的存儲的跟蹤信息所有丟失了,可見其是存儲在內存中的,有時候咱們須要將全部信息存儲下來,這裏以存儲到Elasticsearch爲例,來演示下該功能。工具

安裝Elasticsearch

  • 運行bin目錄下的elasticsearch.bat啓動Elasticsearch

修改啓動參數將信息存儲到Elasticsearch

  • 使用如下命令運行,就能夠把跟蹤信息存儲到Elasticsearch裏面去了,從新啓動也不會丟失;
# STORAGE_TYPE:表示存儲類型 ES_HOSTS:表示ES的訪問地址
java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=localhost:9200 
複製代碼
  • 以後須要從新啓動user-service和ribbon-service才能生效,重啓後屢次調用ribbon-service的接口http://localhost:8301/user/1

  • 若是安裝了Elasticsearch的可視化工具Kibana的話,能夠看到裏面已經存儲了跟蹤信息:

更多啓動參數參考

github.com/openzipkin/…

使用到的模塊

springcloud-learning
├── eureka-server -- eureka註冊中心
├── user-service -- 提供User對象CRUD接口的服務
└── ribbon-service -- ribbon服務調用測試服務
複製代碼

項目源碼地址

github.com/macrozheng/…

公衆號

mall項目全套學習教程連載中,關注公衆號第一時間獲取。

公衆號圖片
相關文章
相關標籤/搜索