前言
參考資料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務(wù)原理與實戰(zhàn)》
《B站 尚硅谷 SpringCloud 框架開發(fā)教程 周陽》
Spring Cloud Sleuth 是一個 Spring Cloud 項目党瓮,它將關(guān)聯(lián) ID 裝備到 HTTP 調(diào)用上痕寓,并將生成的跟蹤數(shù)據(jù)提供給 OpenZipkin 的鉤子呻引。Spring Cloud Sleuth 通過添加過濾器并與其他 Spring 組件進行交互,將生成的關(guān)聯(lián) ID 傳遞到所有系統(tǒng)調(diào)用单旁;
1. Sleuth 基礎(chǔ)知識
1.1 Sleuth 原理
- 使用 Sleuth 來追蹤服務(wù)調(diào)用鏈很簡單琅豆,只需要添加一個 pom.xml 依賴即可;
- 添加依賴后會對輸出日志追加一條信息盛嘿;
- 利用信息里的追蹤 ID即可獲知本次調(diào)用使用到了哪些服務(wù)箱熬;
2. 在服務(wù)中使用 Sleuth 追蹤
2.1 引入 pom.xml 依賴文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
- 只需要引入該依賴文件即可完成以下工作:
- 檢查每次調(diào)用是否存在 Spring Cloud Sleuth 跟蹤信息,存在則進行日志記錄和處理狈邑;
- 將 Spring Cloud Sleuth 跟蹤信息添加到 Spring MDC(Spring Mapped Diagnostic Context城须,Spring 的映射診斷上下文);
- 將 Spring Cloud跟蹤信息注入服務(wù)發(fā)出的每個出站 HTTP 調(diào)用以及 Spring 消息傳遞通道的消息中米苹;
2.2 查看日志信息
- 啟動服務(wù)糕伐,調(diào)用接口,則會在控制臺里看到類似如下信息:
Sleuth 的日志信息.png
-
Sleuth 會在每個日志條目追加以下信息:
-
服務(wù)的應(yīng)用程序名稱:默認(rèn)為
spring.application.name
定義的名稱蘸嘶; - 跟蹤 ID(trace ID):跟蹤 ID是關(guān)聯(lián) ID 的等價術(shù)語良瞧,表示整個事務(wù)的唯一編號;
- 跨度 ID(span ID):表示整個事務(wù)中某一部分的唯一 ID(當(dāng)與 Zipkin 集成來可視化事務(wù)時训唱,跨度 ID 尤為重要 )褥蚯;
- 是否將跟蹤數(shù)據(jù)發(fā)送到 Zipkin:對大量的日志數(shù)據(jù)起過濾篩選作用;
-
服務(wù)的應(yīng)用程序名稱:默認(rèn)為
舉個例子:客戶端請求上游服務(wù)况增,而上游服務(wù)需要請求下游服務(wù)時赞庶,這兩個服務(wù)有相同的跟蹤 ID,不同的跨度 ID澳骤;