examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 25 分鐘

AWS X-Ray — 分散式追蹤與應用程式效能

5,000 字 · 約 25 分鐘閱讀 ·

深入解析 AWS X-Ray 服務圖、區段 (segments)、次區段 (subsegments)、取樣規則、追蹤上下文傳播,以及守護程序 (daemon) vs SDK vs ADOT 與 Lambda、ECS、EKS、API Gateway 及 CloudWatch ServiceLens 的整合。

立即做 20 題練習 → 免費 · 不用註冊 · DOP-C02

AWS X-Ray 分散式追蹤解決了 DevOps 工程師在處理事件時最痛苦的問題:在包含 17 個微服務的請求鏈中,延遲或錯誤究竟源自哪裡? 僅靠日誌無法回答這個問題 —— 日誌散落在各個服務的孤島中,且缺乏跨服務的關聯性。指標可以提供摘要,但無法進行追蹤。X-Ray(以及其現代化的 OpenTelemetry 基於 ADOT 的模式)將完整的請求路徑重建為一條追蹤 (trace),由多個區段 (segments)(每個服務一個)和次區段 (subsegments)(服務內部的每個外傳呼叫一個)組成。這讓你能查看服務圖 (service map)、深入分析緩慢的跨度 (span),並與日誌和指標進行關聯。DOP-C02 要求你了解如何儀表化 (instrument) 每個運算平台(Lambda、ECS、EKS、EC2、內部部署)、挑選正確的取樣規則以限制成本、跨 SQS / SNS / EventBridge 傳播追蹤上下文,以及將 X-Ray 與 CloudWatch ServiceLens 整合以實現統一的可觀察性。

本指南假設你了解分散式追蹤的基本前提(追蹤 ID、父子跨度關係),且至少看過一次 X-Ray 主控台。重點在於 DOP-C02 的實作深度:區段 vs 次區段 vs 註釋 (annotations) vs 中繼資料 (metadata)、守護程序和 SDK 層級的取樣規則、EC2/ECS-on-EC2 上的 X-Ray 守護程序模型與 Lambda 和 Fargate 上的 AWS 代管擷取、Java/Node.js/Python/.NET/Go/Ruby 的 X-Ray SDK、作為新儀表化戰略繼承者的 AWS Distro for OpenTelemetry (ADOT)、追蹤上下文標頭 (X-Amzn-Trace-Id) 及其跨非同步邊界的傳播、用於追蹤模式異常偵測的 X-Ray 洞察 (Insights)、用於篩選的 X-Ray 群組、追蹤資料的 KMS 加密,以及將 X-Ray 追蹤與 CloudWatch 指標和日誌融合到單一主控台的 ServiceLens。網域 4.2(稽核、監控和分析日誌與指標以偵測問題)和網域 5.3(對系統和應用程式故障進行疑難排解)涵蓋了此內容。

為什麼 X-Ray 分散式追蹤對 DOP-C02 很重要

分散式追蹤是唯一能原生跨越服務的可觀察性工具。CloudWatch 指標一次只能看到一個服務。CloudWatch Logs 一次只能看到一個日誌群組。沒有追蹤,「訂單 API 很慢」會變成一場涉及 12 個服務、耗時數日的調查。有了 X-Ray,服務圖能在一個螢幕上顯示緩慢的節點,追蹤時間軸則能顯示具體是哪個下游呼叫消耗了時間。DOP-C02 在網域 4.2 和 5.3 中非常看重這項技能。多份考後報告將「X-Ray 服務圖」和「追蹤上下文傳播」列為高頻考試主題。

這裡的考試風格是豐富的整合情境。典型的題幹如下:「一個 API Gateway → Lambda → DynamoDB → SQS → Lambda → DynamoDB 鏈顯示 P99 延遲為 4 秒,且沒有明顯的罪魁禍首。哪兩個變更可以幫助團隊隔離緩慢的鏈接?」錯誤答案通常圍繞「增加日誌詳細程度」或「啟用 CloudWatch 詳細監控」。正確的一對是:在每個 Lambda 和 API Gateway 上啟用 X-Ray,並在 SQS 訊息屬性中傳播追蹤上下文。考試測試你是否知道哪些運算平台需要守護程序、哪些會自動儀表化,以及哪些需要跨隊列和事件匯流排手動傳播上下文。

  • 追蹤 (Trace):單個請求跨所有服務的完整紀錄,由一個帶有嵌入時間戳記的全局唯一 35 字元追蹤 ID 識別。
  • 區段 (Segment):追蹤中屬於一個服務的部分;由 SDK 或由 AWS 自動創建(API Gateway、Lambda、ALB)。
  • 次區段 (Subsegment):區段內的一個工作單元 —— 通常是一個外傳呼叫(DynamoDB、S3、HTTP、自定義)或一個邏輯塊。
  • 註釋 (Annotation):區段上的鍵值對,會被編制索引以供篩選和搜尋;每個區段最多 50 個。
  • 中繼資料 (Metadata):不編制索引的任意鍵值對;每個區段最多 64 KB,用於工程師在調查期間可能需要的上下文。
  • 取樣規則 (Sampling rule):決定紀錄追蹤請求比例的按服務或按資源規則;X-Ray 按錄製的區段計費,因此取樣可控制成本。
  • X-Ray 守護程序 (X-Ray daemon):EC2/ECS-on-EC2/內部部署上的 sidecar UDP 監聽器,負責緩衝區段資料並將其發送到 X-Ray API;在 Lambda 或 Fargate 上不需要(由 AWS 處理)。
  • 追蹤上下文標頭 (Trace context header):在 HTTP、訊息屬性和 SDK 呼叫中攜帶的 X-Amzn-Trace-Id: Root=...;Parent=...;Sampled=...,以便子區段能鏈接回父追蹤。
  • ADOT (AWS Distro for OpenTelemetry):AWS 支援的 OpenTelemetry 發行版,將追蹤匯出到 X-Ray,將指標匯出到 CloudWatch / Managed Prometheus;這是未來的戰略路徑。
  • CloudWatch ServiceLens:在單一視圖中將 X-Ray 追蹤與 CloudWatch 指標和日誌關聯起來的主控台。
  • X-Ray 洞察 (Insights):基於 ML 的追蹤模式異常偵測,可自動發現異常的錯誤/延遲叢集。
  • X-Ray 群組 (Group):一個儲存的篩選表達式,將服務圖和追蹤範圍限定在一個子集內(例如,僅生產環境中的結帳服務)。
  • 參考資料:https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html

白話文解釋 X-Ray 分散式追蹤

分散式追蹤在概念上不同於日誌或指標,沒接觸過的工程師有時會將其誤認為「高級日誌」。三個類比可以讓模型清晰起來。

類比 1:醫院病人就診地圖

一位病人帶著複雜的症狀進入急診室。他們經過分診、被送去檢查、接著進行專家會診、接著進入手術室、接著進入恢復室,最後出院。每個部門都寫下自己的筆記(CloudWatch Logs)。每個部門也取樣生命徵象(CloudWatch 指標)。但沒人擁有的是 —— 直到你構建它為止 —— 端到端的病人就診時間軸,精確顯示病人到達每個站點的時間、等待了多久、工作花了多久,以及是哪一步耽誤了出院。那個時間軸就是 X-Ray 追蹤。每個部門的部分就是一個區段。在影像部門的部分內,等待核磁共振 (MRI) 機器空出來的時間就是一個次區段。病人的手環就是追蹤上下文標頭 —— 每個部門讀取手環,將自己的部分與就診過程鏈接,並寫下筆記。沒有手環,放射科醫師就無法將「病人 X 的掃描」與「急診室的病人 X」聯繫起來 —— 他們是孤立的。考試喜歡考團隊擁有日誌但無法連接它們的情境:答案是傳播追蹤上下文,跨越服務和隊列。

類比 2:通過廚房的餐廳訂單

一家複雜的餐廳設有熱食線、冷食線、甜點台、酒窖和外送員。訂單小票在每個台位都會蓋上到達和離開的時間戳記 —— 這就是 X-Ray 追蹤時間軸。顧客的總等待時間就是追蹤持續時間服務圖是顯示哪個台位供應哪個台位的廚房流程圖:客桌連接到領位台,領位台連接到廚房準備,廚房準備連接到熱食線、冷食線和甜點台,最後在出餐口匯合,交給外送員。當訂單很慢時,經理會查看服務圖,看哪個台位顯示紅框(高錯誤或高延遲),並從該台位調出幾個追蹤,看具體是哪個子步驟(油炸鍋、沙拉組裝、調醬師)導致了等待。註釋是小票上可搜尋的標籤 —— 桌號、聚餐人數、VIP 身份、飲食要求。中繼資料是主廚非搜尋性但有用的隨手筆記。取樣是「我們不詳細追蹤每張小票,只追蹤每 10 張中的 1 張,以及每張被投訴的小票」的政策 —— 限制了文書成本。

類比 3:郵政服務追蹤包裹

一個包裹從寄件人到收件人經歷多個路段:取件卡車、區域分揀設施、長途航空、目的地分揀、最後一英里貨車。每個路段都將追蹤號碼(追蹤 ID)掃描到資料庫中。客戶的追蹤頁面顯示時間軸 —— 09:14 取件、11:02 到達分揀設施、14:30 離開等。這完全就是一個 X-Ray 追蹤服務圖是路徑圖。取樣是「我們記錄每個包裹的高層級掃描,但僅深度追蹤 1% 以保持資料庫可控,此外我們深度追蹤所有帶有 priority 旗標的包裹」。洞察 (Insights) 是郵政服務的異常偵測,它會在沒人執行查詢的情況下告訴你「今日芝加哥轉運中心的延遲比平時增加了 30%」。ServiceLens 則是營運主控台,在同一張地圖上覆蓋包裹指標(數量、延遲)。X-Ray 守護程序是本地掃描終端,負責批次處理掃描並發送出去 —— 在 Lambda 和 Fargate 上這已內建於平台;在 EC2 上你需要將其作為 sidecar 運行。

對於以「在鏈條中找到慢服務」為核心的 DOP-C02 題目,請參考醫院病人就診類比。對於以「服務圖和依賴項視覺化」為核心的題目,請參考餐廳廚房流程類比。對於以「取樣、註釋和非同步傳播」為核心的題目,請參考郵政包裹追蹤類比。參考資料:https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html

追蹤分析 — 區段、次區段、註釋、中繼資料

一條追蹤是區段和次區段組成的樹狀結構。當請求首次進入受儀表化的服務時,會創建根區段。下游服務繼承追蹤 ID 並創建子區段。在每個區段內,SDK 為外傳工作(對 DynamoDB、S3、HTTP 服務的呼叫或開發人員使用 subsegment.begin()/end() 包裝的自定義程式碼塊)創建次區段

註釋可搜尋,中繼資料不可搜尋

註釋是編制索引的鍵值對(字串、數字、布林值),用於 X-Ray 主控台的篩選表達式:annotation.environment = "prod" AND annotation.user_id = "abc123"。限制:每個區段 50 個。將註釋用於調查時的切入維度

中繼資料是任意 JSON,每個區段最多 64 KB,不可搜尋。將中繼資料用於工程師在調出追蹤後可能想要查看的額外上下文 —— 請求內容、回應大小、內部狀態。

錯誤 (Errors)、故障 (Faults) 與節流 (Throttles)

每個區段都帶有錯誤/故障/節流旗標。錯誤 = 客戶端錯誤(4xx HTTP,被捕獲並重新拋出的異常)。故障 = 伺服器端錯誤(5xx HTTP,未處理的異常)。節流 = 下游節流(429,ProvisionedThroughputExceededException)。服務圖按主要的旗標為節點著色 —— 故障為紅色、錯誤為橙色、節流為黃色。

取樣規則 — 具備可見性的成本控制

X-Ray 按錄製的區段計費。取樣定義了錄製請求的比例。兩個層級:

預設取樣(未配置規則)

每秒錄製第一個請求;對於後續請求,錄製 5%。這對於開發環境還可以,但對於高流量生產環境則不合適(10,000 RPS 的 5% = 每秒 500 個區段計費 = 昂貴)。

自定義取樣規則(推薦)

在 X-Ray 主控台或透過 API 定義規則。每條規則都有:

  • 儲存庫大小 (Reservoir size):每秒始終取樣的固定請求數(例如 1)。
  • 固定速率 (Fixed rate):儲存庫之外取樣的請求百分比(例如 0.05 = 5%)。
  • 匹配條件:服務名稱、服務類型、主機、HTTP 方法、URL 路徑、資源 ARN —— 規則僅適用於匹配的請求。
  • 優先順序:當多條規則匹配時,數字越小越優先。

使用案例:將 /healthcheck 保持在 0 儲存庫 + 0% 速率(完全不追蹤),將 /checkout 保持在 5 儲存庫 + 100% 速率(全部追蹤),將所有其他路徑保持在 1 儲存庫 + 5% 速率。

當上游服務對請求進行取樣時,追蹤上下文標頭會攜帶 Sampled=1。鏈條中的每個下游服務都會錄製其區段,而不會做出自己的取樣決策。這意味著上游取樣規則控制著整個鏈條的追蹤量,而不僅僅是它自己的。請在進入點(API Gateway、ALB、前端服務)設置取樣;下游服務除非接收來自多個進入點的流量,否則不需要自己的自定義規則。參考資料:https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html

各運算平台上的 X-Ray

各平台的儀表化模式不同。

Lambda

在函數上啟用 Active tracing(CloudFormation: TracingConfig: { Mode: Active })。AWS 會自動為調用創建區段。Lambda 執行環境已嵌入 X-Ray 守護程序 —— 無需 sidecar。在程式碼中添加 X-Ray SDK(或 AWS Lambda Powertools)會自動為下游 AWS SDK 呼叫和 HTTP 呼叫創建次區段。

Fargate (ECS 和 EKS)

X-Ray 守護程序作為 sidecar 容器運行在任務定義中,監聽任務內部的 UDP 2000 埠。應用程式容器的 SDK 將區段發送到 sidecar,由其轉發到 X-Ray API。ADOT 收集器是現代化的替代方案。

ECS on EC2

將守護程序作為 DaemonSet 運行在每台 EC2 主機上(每台執行個體一個守護程序,該執行個體上的所有容器透過主機網路共享)作為每項任務中的 sidecar 運行。DaemonSet 在大規模下更有效率。

EKS

與 ECS 相同 —— 使用 DaemonSet 部署守護程序。較新的模式是將 ADOT 收集器作為 Kubernetes Deployment 或 DaemonSet 運行,支援 X-Ray 和 OpenTelemetry 相容的後端。

EC2 / 內部部署

在每台主機上安裝 X-Ray 守護程序(yum/apt 套件或二進位檔)。配置 SDK 發送到 UDP 127.0.0.1:2000。

API Gateway

在階段 (stage) 上切換 X-Ray 追蹤。API Gateway 會自動創建上游區段;如果整合目標也經過儀表化,則追蹤會繼續。

Application Load Balancer

ALB 將 X-Amzn-Trace-Id 標頭注入傳入的請求。ALB 本身不創建區段,但接收標頭的下游服務可以提取並傳播追蹤上下文。

追蹤上下文傳播 — 最難的部分

同步 HTTP 和 AWS SDK 呼叫在 SDK 經過儀表化時會自動傳播上下文。非同步邊界是工程師最常遺失上下文的地方。

SQS

生產者將追蹤上下文作為訊息屬性 (AWSTraceHeader) 添加。取用者 SDK 讀取屬性並繼續追蹤。如果你將追蹤 ID 放入訊息本文,AWS 不會自動連結。

SNS

與 SQS 相同 —— AWSTraceHeader 訊息屬性。

EventBridge

PutEvents 時將追蹤上下文添加到事件詳情 (detail) 中;接收的 Lambda 需要手動提取,除非使用整合的 AWS SDK 傳播。

Step Functions

Step Functions 與 X-Ray 原生整合;在狀態機上啟用後,追蹤會包含每個狀態轉換。

Kinesis

在紀錄資料或分割區金鑰中編碼追蹤上下文 —— 沒有原生的訊息屬性。大多數團隊在此使用 ADOT-OTel 傳播以獲取原生支援。

一個常見的 DOP-C02 題幹:一個請求經過 API Gateway → Lambda → SQS → Lambda → DynamoDB,但 X-Ray 服務圖顯示鏈條在第一個 Lambda 就結束了。陷阱干擾項是「在第二個 Lambda 上啟用 Active tracing」。僅靠這一點無法解決問題 —— 第二個 Lambda 會創建一個新的根追蹤,因為它從未收到上下文。解決方法是在發送訊息時AWSTraceHeader 作為 SQS 訊息屬性傳播,並在取用端讀取它。參考資料:https://docs.aws.amazon.com/xray/latest/devguide/xray-services-sqs.html

ADOT — AWS Distro for OpenTelemetry

新儀表化的戰略方向是 OpenTelemetry,而 AWS Distro (ADOT) 是受支援的管道,可將追蹤匯出到 X-Ray,將指標匯出到 CloudWatch / Managed Prometheus。為什麼 ADOT 對 DOP-C02 很重要:

  • 供應商中立:同一套儀表化適用於 X-Ray、Datadog、Honeycomb、New Relic。
  • 統一管道:透過同一個收集器處理追蹤和指標。
  • OpenTelemetry 語義慣例:全行業標準化的屬性名稱。
  • 面向未來:AWS 正在投資 ADOT,而僅限 X-Ray 的 SDK 已進入維護模式。

ADOT 作為 sidecar (Fargate)、DaemonSet (EKS) 或 Lambda 分層運行。考試測試你是否知道 ADOT 是新專案的首選,以及在跨供應商可移植性方面的優勢,而 X-Ray SDK 對於僅限 AWS 的技術堆疊仍可接受。

CloudWatch ServiceLens — 統一的主控台

ServiceLens 將 X-Ray 服務圖、CloudWatch 指標和 CloudWatch 日誌融合到一個視圖中。從服務圖上的節點,你可以:

  • 深入分析區段時間軸。
  • 跳轉到該服務的相關 CloudWatch 指標(延遲、錯誤、請求)。
  • 運行限定在服務日誌群組、按追蹤 ID 篩選的 CloudWatch Logs Insights 查詢。
  • 查看覆蓋在地圖上的 OK / ALARM 狀態的警報。

ServiceLens 是值班工程師的調查主控台。考試期望你知道它的存在,並且是題目提到「單一主控台處理追蹤、指標和日誌」時的答案。

X-Ray 洞察 (Insights) — 追蹤模式的異常偵測

X-Ray 洞察使用 ML 隨時間尋找異常的錯誤或延遲模式叢集,並將其浮現為洞察事件及根本原因假設(例如,「Orders 表上的 DynamoDB 節流導致過去 30 分鐘內 23% 的 OrderService 錯誤」)。洞察會作為 aws.xray 來源上的 EventBridge 事件發出,因此可以路由到 SNS、Lambda 或 Incident Manager 回應計劃。針對每個 X-Ray 群組啟用洞察。

X-Ray 群組 (Groups) — 限定範圍的服務圖

群組是儲存的篩選表達式。範例:

  • service("checkout-api") AND annotation.environment = "prod"
  • responsetime > 5 OR fault = true

群組擁有自己的服務圖、保留期和洞察配置。使用群組來限定按團隊、按服務或按環境的視圖。

加密與保留

X-Ray 資料預設使用 AWS 代管金鑰在靜態時加密。你可以配置一個客戶受管 KMS 金鑰,該金鑰在帳戶層級套用到該區域的所有追蹤。X-Ray 追蹤預設保留 30 天;長期保留需要透過 X-Ray 事件上的 Lambda 訂閱者將資料匯出到 S3。

  • 追蹤保留:預設 30 天;不可延長。
  • 預設取樣:1 req/sec 儲存庫 + 5% 速率,若無自定義規則則適用。
  • 在追蹤開始時做出的取樣決策會傳播到所有下游區段。
  • 註釋 (Annotations):已編制索引,每個區段最多 50 個,用於篩選表達式。
  • 中繼資料 (Metadata):未編制索引,每個區段最多 64 KB。
  • 守護程序 (Daemon):在 EC2 / ECS-on-EC2 / 內部部署上是必需的;在 Lambda 或 Fargate 上不需要(已內建)。
  • 追蹤上下文標頭:X-Amzn-Trace-Id: Root=1-XXXXXXXX-XXXXXXXX;Parent=YYYYYYYY;Sampled=1。 參考資料:https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html

高頻考試陷阱

陷阱 1:Lambda Active 追蹤 vs Passive 追蹤

在 Lambda 上啟用 Active 追蹤會為每個取樣決策 = 1 的調用創建一個區段。Passive 追蹤(遺留概念;很少考)僅在上游服務已經啟動追蹤時才創建區段。考試會用「Passive 追蹤已足夠」來干擾 —— 請選擇 Active 追蹤

陷阱 2:Fargate 不需要 X-Ray 守護程序

Fargate 已將守護程序內建於任務代理程序中。干擾項:「在 Fargate 上部署守護程序作為 sidecar」 —— 錯誤(可選但非必要;首選內建方式)。

陷阱 3:跨 SQS 的追蹤標頭傳播

使用 AWSTraceHeader 訊息屬性,而非訊息本文。干擾項:「在訊息本文 JSON 中嵌入追蹤 ID」 —— 在 X-Ray 中不會自動連結。

陷阱 4:進入點的取樣決策

一旦上游取樣了 Sampled=1,在下游服務設置自定義取樣就沒有效果。進入點控制整個鏈條。

陷阱 5:註釋上限為 50 個

如果你需要超過 50 個索引欄位,則不能僅靠註釋。其餘的請使用中繼資料,或者拆分為多個次區段,每個次區段擁有自己的註釋。

陷阱 6:X-Ray vs CloudWatch Logs Insights 用於追蹤

X-Ray 用於跨服務的請求路徑延遲和錯誤分析。Logs Insights 用於日誌群組內的日誌內容查詢。當題目要求服務圖和下游呼叫計時時,不要選擇 Logs Insights。

陷阱 7:30 天保留期無法延長

對於長期追蹤存檔,請透過訂閱 X-Ray 事件的 Lambda 匯出到 S3。干擾項:「將 X-Ray 保留期配置為 1 年」 —— 無法配置。

DOP-C02 的干擾項會提供 Amazon QuickSight 用於「統一可觀察性儀表板」。QuickSight 用於針對資料倉儲的商業智慧,而非用於營運追蹤與指標的關聯。DevOps 單一視景的正確答案是 CloudWatch ServiceLens(融合 X-Ray + CloudWatch),或者選配 Amazon Managed Grafana 用於跨來源儀表板。參考資料:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html

DOP-C02 考試模式與情境演練

情境 1:尋找緩慢的微服務

題幹:「跨 6 個服務的鏈條 API P99 為 4 秒;團隊無法分辨哪個服務慢。」正確:透過 Active 追蹤 (Lambda)、守護程序 (EC2/ECS) 或 ADOT (EKS) 在每個服務上啟用 X-Ray;查看服務圖;選取延遲最高的節點並深入分析追蹤。

情境 2:跨 SQS 邊界追蹤請求

題幹:「追蹤似乎在第一個 Lambda 就結束了;SQS 取用者創建了一個新的根追蹤。」正確:在 PutMessage 時,將當前追蹤上下文填入 AWSTraceHeader 訊息屬性;取用者 SDK 會自動提取。

情境 3:高流量 API 的成本控制

題幹:「在 1000 RPS 下,X-Ray 帳單過高。」正確:定義一個自定義取樣規則,設置小的儲存庫 (1) 和低的固定速率 (1-5%);透過 0/0 規則將 /healthcheck 完全排除。

情境 4:自動偵測延遲異常

題幹:「希望在無需手動檢查儀表板的情況下自動偵測異常的延遲叢集。」正確:在相關群組上啟用 X-Ray 洞察 (Insights);透過 EventBridge 將洞察事件路由到 SNS 或 Incident Manager。

情境 5:跨供應商遙測

題幹:「團隊使用 Datadog 處理指標,使用 X-Ray 處理追蹤;希望使用單一儀表化函式庫。」正確:使用 AWS Distro for OpenTelemetry (ADOT),透過 OTLP 匯出器將追蹤發送到 X-Ray,將指標發送到 Datadog。

常見問題 (FAQ)

Q1:我應該何時使用 X-Ray 或 CloudWatch Logs Insights?

X-Ray 用於跨服務的請求路徑追蹤 —— 當問題是「哪個服務或下游呼叫導致了此延遲」時。Logs Insights 用於服務內的日誌內容查詢 —— 當問題是「錯誤訊息是什麼」或「有多少使用者點擊了此端點」時。它們是互補的;ServiceLens 將它們融合。

Q2:在高流量下我該如何降低 X-Ray 成本?

使用帶有小儲存庫 (1 req/sec) 和低固定速率 (1-5%) 的自定義取樣規則。完全排除 /healthcheck 和類似的端點。取樣決策會在鏈條中向下傳播,因此配置進入點即可覆蓋整個追蹤。

Q3:新程式碼應該使用 X-Ray SDK 還是 ADOT?

對於新程式碼,首選 ADOT —— 它是未來的戰略方向,提供供應商中立性,並在一個管道中支援追蹤和指標。對於 X-Ray SDK 運作良好的現有程式碼,除非需要 OTel 功能,否則無需遷移。

Q4:我該如何跨 SQS 傳播追蹤上下文?

生產者設置 AWSTraceHeader 訊息屬性。取用者的 SDK 會提取它。沒有這個屬性,SQS 取用者會創建一個新的根追蹤,斷開鏈條。

Q5:Lambda 是否需要 X-Ray 守護程序?

不需要。Lambda 的執行環境已包含守護程序。你只需在函數上啟用 Active 追蹤,並(選配)添加 X-Ray SDK 或 AWS Lambda Powertools 來處理次區段。

Q6:X-Ray 保留追蹤多久?

30 天,不可配置。如需更長期的保留,請透過訂閱 X-Ray API 的 Lambda 進行匯出,並利用生命週期政策寫入 S3。

Q7:X-Ray 可以追蹤跨帳戶的流量嗎?

可以 —— 追蹤上下文標頭會跨 HTTP 和 AWS SDK 呼叫自然傳播,不論帳戶為何。每個帳戶儲存自己的區段。若要查看跨帳戶的統一服務圖,請使用 CloudWatch 跨帳戶可觀察性與監控帳戶共享 X-Ray 追蹤。

交叉參照

  • CloudWatch 指標與 Logs Insights 是 ServiceLens 與 X-Ray 融合的指標與日誌層;請參閱 cloudwatch-metrics-logs-insights
  • CloudWatch 警報與 EventBridge 取用 X-Ray 洞察事件以進行自動化升級;請參閱 cloudwatch-alarms-eventbridge-integration
  • 部署失敗疑難排解利用 X-Ray 將失敗的部署請求與下游延緩關聯起來;請參閱 deployment-failure-troubleshooting
  • CloudTrail 與 Config 儀表板補充了 X-Ray 在治理和稽核方面的可見性;請參閱 cloudtrail-config-audit-dashboards
  • Incident Manager 與 Health 取用 X-Ray 洞察事件作為回應觸發器;請參閱 systems-manager-incident-manager-health

官方資料來源

更多 DOP-C02 主題