Zipkin
使用 Micrometer Tracing 和 Zipkin 來建立可追蹤的日誌系統Zipkin 是一個可以用來收集和視覺化追蹤訊息的工具
檢查依賴項目
pom.xml
加入 spring-boot-starter-actuator、micrometer-tracing-bridge-brave 和 zipkin-reporter-brave 的依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.reporter2</groupId>
<artifactId>zipkin-reporter-brave</artifactId>
</dependency>
-
spring-boot-starter-actuator(應用程式監控):- Actuator 是 Spring Boot 的一個模組,提供了一系列生產環境級的功能來監控和管理您的應用程式。
- 它會自動暴露許多 HTTP 端點,例如 /health (應用程式健康狀態)、/info (應用程式資訊)、/metrics (各種性能指標) 等。
- 當您在應用程式中加入 Micrometer 或其他監控工具時,Actuator 常常是這些工具將其收集到的數據暴露出來的基礎設施。
-
Micrometer (指標門面):
- Micrometer 是一個應用程式指標的門面 (facade),它提供了一套通用的 API 來收集應用程式的各種性能指標 (例如計數器、計時器等)。
- 它本身並不提供追蹤功能,但 Micrometer Tracing 是基於 Micrometer 建立的,專門處理分散式追蹤。
-
Micrometer Tracing 與 Actuator 的關係:
- 當您在 Spring Boot 3.x 或更高版本中加入 Micrometer Tracing (搭配 Brave 和 Zipkin Reporter)
時,spring-boot-starter-actuator 扮演了幾個重要的角色:
- 暴露指標:Micrometer Tracing 會產生一些與追蹤相關的內部指標(例如發送到 Zipkin 的 spans 數量),這些指標可以透過 Actuator 的 /metrics 端點暴露出來,供您監控追蹤系統本身的運行狀況。
- 健康檢查:Actuator 也可能暴露追蹤報告器的健康狀態。
- 自動配置:在某些情況下,Actuator 的存在會觸發 Micrometer Tracing 的某些自動配置,確保追蹤功能能正確地被集成。
- 當您在 Spring Boot 3.x 或更高版本中加入 Micrometer Tracing (搭配 Brave 和 Zipkin Reporter)
時,spring-boot-starter-actuator 扮演了幾個重要的角色:
檢查配置設定
application.yml
在檔案末端加入 Micrometer Tracing 的相關設定
- 將追蹤資料發送到 Zipkin (地址為 http://localhost:9411/api/v2/spans)。
- 對所有請求都進行追蹤 (取樣率為 100%)。
安裝了套件,預設的「取樣率」通常很低(為了節省效能)。在開發環境中,你必須將其設為 1.0 (100%) 才能確保每一次請求都被記錄。
management:
zipkin:
tracing:
endpoint: http://localhost:9411/api/v2/spans
tracing:
sampling:
probability: 1.0
容器配置
docker-compose.yml
containerization/docker-compose-v2
UI 介面
Zipkin 介面 (http://localhost:9411)
Zipkin 的介面上看到一個完整的請求鏈路圖,清楚地知道: - 請求經過了哪些服務。 - 在每個服務上花了多少時間。 - 哪個環節是效能瓶頸或發生了錯誤。
追縱紀錄
待所有服務都成功啟動後,請訪問 http://localhost:8080/api/orders/user/1。
完成以上步驟後,請回到 Zipkin 介面 (http://localhost:9411),點擊 "Run Query"
應該就能看到追蹤記錄了