# SpringCloud Sleuth+Zipkin-鏈路追蹤 官網:[spring-cloud/spring-cloud-sleuth: Distributed tracing for spring cloud (github.com)](https://github.com/spring-cl ...
SpringCloud Sleuth+Zipkin-鏈路追蹤
官網:spring-cloud/spring-cloud-sleuth: Distributed tracing for spring cloud (github.com)
分散式鏈路追蹤之Spring Cloud Sleuth+Zipkin最全教程! - bucaichenmou - 博客園 (cnblogs.com)
1.Sleuth+Zipkin是什麼
- 在微服務框架中,一個由客戶端發起的請求在後端系統中會經過多個不同的的服務節點調用,來協同產生最後的請求結果,每一個請求都會形成一條複雜的分散式服務調用鏈路
- 鏈路中的任何一環出現高延時或錯誤都會引起整個請求最後的失敗,因此對整個服務的調用進行鏈路追蹤和分析就非常的重要
- Sleuth 提供了一套完整的服務跟蹤的解決方案並相容 Zipkin。Sleuth 做鏈路追蹤 , Zipkin 做數據搜集/存儲/可視化。
2.Sleuth+Zipkin的工作原理
-
Span 和 Trace 在一個系統中使用 Zipkin 的過程-圖形化
- 一條鏈路通過Trace Id唯一標識 , Span標識發起的請求信息,各span通過parent id關聯起來
- Trace:類似於樹結構的Span集合,表示一條調用鏈路,存在唯一標識
- Span:基本工作單元,表示調用鏈路來源,通俗的理解span就是一次請求信息
-
spans 的 parent/child 關係圖形化
標識的紅線,後一個span節點的parentId 指向/記錄 了上一個Span,span就是一次請求信息,多個Span集合就構成一條調用鏈路,在span=C 這個節點存在分支
3.搭建鏈路監控實例
要求: 通過 Sleuth 和 Zipkin 可以對服務調用鏈路進行監控,併在 Zipkin 進行顯示
3.1安裝Zipkin
-
訪問 https://repo1.maven.org/maven2/io/zipkin/java/zipkin-server/2.12.9/,點擊下載第一個jar文件
-
把 zipkin-server-2.12.9-exec.jar 放到指定的目錄
-
進入 cmd , 執行指令運行: java -jar zipkin-server-2.12.9-exec.jar
3.2服務提供方集成 Sleuth/Zipkin
-
修改 member-service-provider-10000 的 pom.xml , 增加引入 sleuth+zipkin
<!--zipkin的starter依賴集成了sleuth+zipkin--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
-
修改 member-service-provider-10000 的 appliaction.xml , 指定 Zipkin
3.3服務消費方集成 Sleuth/Zipkin
略,步驟同3.2
- 修改 member-service-consumer-80 的 pom.xml , 增加引入 sleuth+zipkin
- 修改 member-service-consumer-80 的 appliaction.xml , 指定 Zipkin
3.4測試
按順序啟動 e-commerce-eureka-server-9001、member-service-provider-10000、member-service-consumer-80。在瀏覽器輸入: http://localhost/member/consumer/get/1
3.5查看監控&分析結果
訪問 http://localhost:9411/zipkin/
-
選擇某個服務,看結果
- 查看一次調用鏈路的深度,以及該鏈路包含請求, 各個請求耗時,找到請求瓶頸,為優化提供依據
-
查看服務調用的依賴關係