X-Ray 概念與架構

AWS 監控與疑難排解

John Q. Martin

Principal Consultant

分散式系統的挑戰

 

單體式應用程式

  • 線性流程,全部在同一個行程內
  • 除錯相對容易

 

分散式應用程式

  • 一次請求會觸及多個服務、資料庫、外部 API
  • 失敗時,是哪個服務造成的?

許多彩線纏成的大結,表示在分散式系統中追蹤單一請求的困難

AWS 監控與疑難排解

什麼是 AWS X-Ray?

 

X-Ray 是分散式追蹤服務,可:

  • 端對端追蹤跨服務的請求
  • 量測延遲並在各步驟偵測錯誤
  • 以服務地圖視覺化應用架構

 

範例請求路徑:

  請求在分散式追蹤中流經多個服務的路徑圖

AWS 監控與疑難排解

五大核心能力

 

X-Ray 五大核心能力:請求追蹤、效能分析、錯誤偵測、服務地圖與洞察

AWS 監控與疑難排解

追蹤如何運作

 

分散式追蹤流程:請求進入 Service A,依序呼叫 Service B 與 Service C,各自透過 HTTP 標頭傳遞 Trace ID;每個服務將相同 Trace ID 的區段送至 X-Ray daemon,再轉送到 X-Ray,組成完整追蹤

AWS 監控與疑難排解

Trace ID 與標頭傳遞

 

Trace ID 格式:

X-Ray Trace ID 格式:版本號、Unix 時間戳(十六進位)、唯一識別碼

 

HTTP 標頭:

X-Amzn-Trace-Id:
  Root=1-5e8c1234-...;
  Parent=abc123;
  Sampled=1
  • Root,Trace ID,各服務相同
  • Parent,上游區段 ID
  • Sampled,0 或 1,追蹤或略過
AWS 監控與疑難排解

X-Ray daemon

 

功能:

  • 監聽 UDP 埠 2000
  • 接收應用程式送來的區段資料
  • 緩衝、批次並轉送至 X-Ray API
  • 將你的應用與 X-Ray 服務解耦

 

依環境的部署:

X-Ray daemon 部署:Lambda 自動、EC2 為服務、ECS 為 sidecar

AWS 監控與疑難排解

抽樣(Sampling)

 

預設規則:

  • 每秒第 1 個請求:一律追蹤
  • 其餘請求的 5%:抽樣

自訂規則欄位:

  • fixed_target-每秒必追數量
  • rate-其餘請求的百分比
  • priority-數字越小優先

 

範例策略:

Rule 1 (priority 1):
  5xx errors -> 100% sampling

Rule 2 (priority 10):
  Normal traffic -> 5% sampling
AWS 監控與疑難排解

Segments(區段)

 

區段會記錄:

  • 服務名稱
  • 開始與結束時間
  • Trace ID
  • HTTP 請求與回應細節
  • AWS 帳戶與區域

 

區段狀態:

五種 X-Ray 區段狀態:in progress、ok、error、fault、throttle

AWS 監控與疑難排解

Subsegments(子區段)

 

時間軸比較:無子區段為單一 800ms;有子區段則分解為 DynamoDB 50ms、PaymentService 400ms(瓶頸)、InventoryService 300ms

子區段的作用:

  • 提供區段內更細的計時
  • 追蹤下游呼叫
  • 將 800ms 分解為:
    • DynamoDB.PutItem:50ms
    • PaymentService 呼叫:400ms
    • InventoryService 呼叫:300ms

 

命名空間:

三種子區段命名空間:aws(AWS 呼叫)、remote(外部 HTTP)、local(自訂程式碼)

AWS 監控與疑難排解

Annotations(註解)

 

重點:

  • 已索引的鍵值對-可搜尋與篩選
  • 限制:每個追蹤最多 50 個索引項
  • 型別:string、number、boolean

用途:

  • user_id、order_id、environment
  • version、功能旗標、錯誤代碼

 

篩選語法:

annotation.user_id = "user-123"
annotation.environment = "production"
AND annotation.version = "1.2.3"
AWS 監控與疑難排解

Metadata(中繼資料)

 

重點:

  • 不建立索引-無法搜尋或篩選
  • 無大小限制
  • 支援任意 JSON 結構

用途:

  • 完整請求與回應內容
  • 錯誤訊息與堆疊追蹤
  • 商務情境(訂單項目、地址)

 

註解 vs. 中繼資料:

比較表:註解可索引且可搜尋;中繼資料更詳細但不建立索引

AWS 監控與疑難排解

完整追蹤結構

 

完整追蹤結構:含四個區段,外部付款 API 最慢

AWS 監控與疑難排解

課程重點整理

 

  • X-Ray-分散式追蹤服務,提供跨服務的端對端可觀測性
  • 追蹤機制-透過 HTTP 標頭傳遞 Trace ID,由 daemon 收集區段,並以可設定的抽樣規則控制
  • 追蹤元件:
    • Segments-服務層級的工作紀錄
    • Subsegments-更細的下游操作計時
    • Annotations-可篩選與搜尋的索引鍵值對
    • Metadata-詳細脈絡,不建立索引
AWS 監控與疑難排解

一起來練習吧!

AWS 監控與疑難排解

Preparing Video For Download...