跳转至

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>

  1. spring-boot-starter-actuator (應用程式監控):

    • Actuator 是 Spring Boot 的一個模組,提供了一系列生產環境級的功能來監控和管理您的應用程式。
    • 它會自動暴露許多 HTTP 端點,例如 /health (應用程式健康狀態)、/info (應用程式資訊)、/metrics (各種性能指標) 等。
    • 當您在應用程式中加入 Micrometer 或其他監控工具時,Actuator 常常是這些工具將其收集到的數據暴露出來的基礎設施。
  2. Micrometer (指標門面):

    • Micrometer 是一個應用程式指標的門面 (facade),它提供了一套通用的 API 來收集應用程式的各種性能指標 (例如計數器、計時器等)。
    • 它本身並不提供追蹤功能,但 Micrometer Tracing 是基於 Micrometer 建立的,專門處理分散式追蹤。
  3. 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 的某些自動配置,確保追蹤功能能正確地被集成。

檢查配置設定

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

version: '3.7'
services:
  zipkin:
    image: openzipkin/zipkin
    ports:
      - "9411:9411"

UI 介面

Zipkin 介面 (http://localhost:9411)

Zipkin 的介面上看到一個完整的請求鏈路圖,清楚地知道: - 請求經過了哪些服務。 - 在每個服務上花了多少時間。 - 哪個環節是效能瓶頸或發生了錯誤。

追縱紀錄

待所有服務都成功啟動後,請訪問 http://localhost:8080/api/orders/user/1。

完成以上步驟後,請回到 Zipkin 介面 (http://localhost:9411),點擊 "Run Query"

應該就能看到追蹤記錄了