# AWS X-Ray
# X-Ray
X-Ray 是分散式追蹤 (Distributed Tracing) 服務用來分析、除錯 微服務 / Serverless 應用中的延遲瓶頸、錯誤鏈、依賴地圖、請求生命週期
# X-Ray 解決什麼問題
| 傳統監控 | X-Ray |
|---|---|
| 只能看單一服務 log | 看整條 Request Chain |
| 重要錯誤難追回 | 每個 node 都能 Trace |
| 找不到延遲根源 | 自動顯示瓶頸在哪一段 |
特別適合 Lambda, API Gateway, ECS, EKS, SQS, DynamoDB, RDS 等
# 主要功能
| 功能 | 説明 |
|---|---|
| Service Map | 自動繪製系統依賴與延遲視圖 |
| Trace View | 單一 Request 完整路徑 |
| Segments/Subsegments | 詳細的 API, DB 呼叫鑑識 |
| Annotations/Metadata | 標籤與 debug 資料 |
| Sampling Rules | 控制追蹤比例降低成本 |
| Errors/Faults 分析 | HTTP 4XX/5XX 決策報告 |
# X-Ray 架構概念
AWS Services > TraceHeader > X-Ray SDK(Instrument Code) > X-Ray Daemon/Embedded Agent > X-Ray Service > X-Ray Console(ServiceMap/Traces)
# Segment/Subsegments 核心概念
| 名稱 | 行為 |
|---|---|
| Segment | 一個服務的頂層追蹤資料 |
| Subsegment | 服務內部細項 (DB, 外部 API, 邏輯) |
EX: Lambda Function > Segment 其對內 DynamoDB, S3 > Subsegment
# 與 Lambda 整合
| 方法 | 行為 |
|---|---|
| Active Tracing (最常用) | 自動產生 trace |
| X-Ray SDK(Python/Node/Java) | 增加自訂 subsegment |
在 Lambda 開 Active Tracing > API Gateway Trace Header 會自動傳遞
# Sampling 成本控制
- 預設:每秒 1 個請求固定抽樣 + 5% 流量抽樣
- 可自訂 rules + 不同 service 使用不同 sampling
高流量時強烈建議啟用 Sampling
# 資訊安全
| 隱私 / 加密 | 支援 |
|---|---|
| In-transit encryption | TLS |
| At-rest encryption | KMS |
| HIPAA, PCI, FedRAMP | 支援 |
X-Ray 預設不會紀錄請求 Body,可手動 Mask Sensitive Data
# ServiceMap 範例
Client > API Gateway > Lambda Function > DynamoDB and S3
線條顏色顯示延遲與錯誤率,快速找出瓶頸 例如 DB Call 變慢
# 常見使用場境
| Scenario | 為何用 X-Ray |
|---|---|
| Serverless Debug (常見) | Lambda Link DB/API 的效能表現根本原因 |
| Microservices Architecture | 跨 request chain 可視化 |
| 高延遲與 Timeout | 哪一段卡住立刻看到 |
| 合規 Audit | 完整 Request Trace |
# 成本
依照 Trace 儲存量 & API Requests 計價
-> Sampleing 成本控制可以省很多錢
# CloudWatch VS X-Ray
| CloudWatch | X-Ray |
|---|---|
| Logs + Metrics | Distributed Tracing |
| 看指標,單一服務 | 看整個請求生命週期 |
| NOC-level 監控 | Developer-level Debug |
兩者互補,而不是替代
# AWS - X-Ray Insight
# X-Ray Insight
自動偵測應用異常行為的分析功能,在 X-Ray Trace 基礎上,找出延遲飆高 / 錯誤玉突增的問題,並提供 root-cause 分析建議
簡單說
- X-Ray 分散式追蹤
- X-Ray Insight 自動異常偵測 & 異常判斷
# 他能發現哪些問題
| Insight 問題 | 說明 |
|---|---|
| Fault | 5XX/Service Erro 突增 |
| Throttle | API Gateway or Service 限流 |
| Latency | 回應時間長,瓶頸飆升 |
| Availability | 無法成功處理 Request |
特別適用於 Serverless + Microservices 高複雜度架構
# Insight 發生時會顯示什麼
| 資訊 | 意義 |
|---|---|
| 問題起點時間 | 何時開始出現異常 |
| 異常資源與節點 | 哪個為服務變慢 / 出錯 |
| Trace Samples | 問題請求樣本 |
| Suggested root cause | 可能的起因 |
Service Map 也會高亮問題服務
# Insight Workflow
X-Ray 收集 traces > 自動建立基本模型 (正常行為) > 異常 (錯誤率 / 延遲提高) > Insights triggered > Console/Email 通知
不需要手動設定規則 > 自動學習系統行為
# Security & Logging
- 支援 CloudWatch 統一事件通知 (SNS, OpsCenter, PagerDuty)
- 每次 Insight 都記錄到 CloudTrail (可審計)
# CloudWatch Alarm VS X-Ray Insights
| CloudWatch Alarm | X-Ray Insights |
|---|---|
| 依數據門檻告警 | 自動偵測異常 Pattern |
| Metrics-based | Request trace-based |
| 純量資料 | 深度 root-cause (DB call, 外部 service) |
Insights = Trace 做智慧告警
# Reference
- AWS - AWS X-Ray concepts
- AWS - Using X-Ray insights