一般問題
問:什麼是 AWS X-Ray?
AWS X-Ray 可協助開發人員分析和偵錯生產、分散式應用程式,例如那些使用微型服務架構的建置成果。有了 X-Ray,您可以了解應用程式及其基礎服務的執行方式,以識別和疑難排解效能問題與錯誤的根本原因。X-Ray 會在請求通過應用程式時提供端對端的請求檢視,並顯示應用程式基礎元件的對應。您可以使用 X-Ray 分析開發與生產階段的應用程式,從簡易的三層應用程式到包含上千服務的複雜微型服務應用程式都適用。
問:為什麼應該使用 X-Ray?
目前,如果您建立並執行分散式應用程式,必須倚賴以每個服務或每個資源為基礎的程序,才能在請求通過應用程式的各個組成元件時追蹤該應用程式請求。由於應用程式執行或使用的架構、服務和資源有各種日誌格式及儲存媒體,使得這個問題變得更為複雜。這樣一來,從最終使用者或服務發出請求到應用程式傳回回應的整個過程,就很難建立各個資料之間的關聯及建立這個過程的完整描述。X-Ray 提供一個以使用者為中心、而非以服務或資源為中心的模型,用以收集對應用程式提出請求的相關資訊。這個模型可讓您在請求通過各個服務和資源時,建立一個以使用者為中心的完整描述。X-Ray 透過代您聯繫和彙整資料,讓您專心改進應用程式最終使用者的體驗。
問:X-Ray 可以用來做什麼?
X-Ray 讓您輕鬆地:
- 建立服務地圖 – X-Ray 透過追蹤對您應用程式發出的請求,建立一個應用程式使用的服務地圖。這為您提供一個應用程式內各種服務之間聯繫的視圖,也能讓您建立一個相依關係樹狀結構、在 AWS 可用區域或區域之間工作時偵測延遲或錯誤,以及將注意力集中在未如預期般運作的服務等。
- 識別問題和錯誤 – X-Ray 會分析對應用程式發出之每個請求的回應代碼,自動醒目提示應用程式程式碼中的錯誤或問題。這樣可輕鬆偵錯應用程式程式碼,且不需要重現錯誤或問題。
- 建立自己的分析和視覺化應用程式 – X-Ray 提供一組查詢 API,可供您建立使用 X-Ray 記錄資料的分析和視覺化應用程式。
核心概念
問:什麼是追蹤?
X-Ray 追蹤是一組共享同個追蹤 ID 的資料點。例如,用戶端對您的應用程式提出請求時,就會對它指派一個唯一的追蹤 ID。當請求進入到應用程式的服務時,服務會使用這個唯一的追蹤 ID,將與請求有關的資訊轉送回 X-Ray。應用程式中每個服務轉送到 X-Ray 的資訊就是一個片段,而追蹤就是片段的集合。
問:什麼是片段?
X-Ray 片段會封裝分散式應用程式中單一元件 (例如,授權服務) 的所有資料點。片段包含註解形式的系統定義和使用者定義的資料,且由一或多個子片段組成,這些子片段代表從服務發出的遠端呼叫。例如,應用程式對資料庫發出呼叫以回應請求時,它會為該請求建立一個片段,其中包含代表資料庫呼叫及其結果的子片段。子片段可包含查詢、使用的表格、時間戳記和錯誤狀態這類資料。
問:什麼是註解?
X-Ray 註解是與片段關聯的系統定義或使用者定義的資料。一個片段可包含多個註解。系統定義的註解包含由 AWS 服務新增到片段的資料,而使用者定義的註解則是由開發人員新增到片段的中繼資料。例如,會自動在應用程式建立的片段中導入 AWS 服務呼叫的區域資料,而您可以選擇對非 AWS 服務發出的呼叫自己新增區域資料。
問:什麼是錯誤?
X-Ray 錯誤是與造成錯誤回應之呼叫片段關聯的系統註解。錯誤中包含錯誤訊息、堆疊追蹤,以及將錯誤與來源檔關聯的任何其他資訊 (例如,版本或遞交 ID)。
問:什麼是抽樣?
為了提供高效且經濟實惠的使用體驗,X-Ray 不會收集傳送到應用程式的每個請求的資料。而是針對具有統計意義的請求數量收集資料。X-Ray 不應做為稽核或合規工具,因為它無法保證資料的完整性。
問:什麼是 X-Ray 常駐程式?
X-Ray 常駐程式會收集追蹤,然後將它們傳送到 X-Ray 服務進行彙整、分析和儲存。透過此常駐程式,您不需要直接使用 API 即可輕鬆地將資料傳送到 X-Ray 服務。
使用 AWS X-Ray
問:如何開始使用 X-Ray?
在應用程式內包含 X-Ray 語言開發套件並安裝 X-Ray 常駐程式,即可開始使用 X-Ray。如需詳細資訊,請參閱 X-Ray 使用者指南。
問:哪些應用程式類型可以與 X-Ray 搭配使用?
X-Ray 可與任何大小的分散式應用程式搭配使用,以同時追蹤和偵錯同步請求與非同步事件。例如,您可以使用 X-Ray 來追蹤對 Web 應用程式發出的 Web 請求,或使用 Amazon SQS 佇列的非同步事件。
問:哪些 AWS 服務可與 X-Ray 一起使用?
X-Ray 可與 EC2、ECS、Lambda、Amazon SQS、Amazon SNS 和 Elastic Beanstalk 上執行的應用程式一起使用。此外,X-Ray 開發套件可使用 AWS 開發套件自動擷取對 AWS 服務發出的 API 呼叫中繼資料。X-Ray 開發套件還提供 MySQL 和 PostgreSQL 驅動程式的增益集。
問:我需要變更應用程式的哪些程式碼才能使用 X-Ray?
如果您使用 Elastic Beanstalk,則必須在應用程式程式碼內包含語言特定的 X-Ray 程式庫。至於在其他 AWS 服務 (EC2 或 ECS) 上執行的應用程式,則必須安裝 X-Ray 常駐程式並檢測應用程式程式碼。
問:X-Ray 是否提供 API?
是,X-Ray 提供一組 API,可用於導入請求資料、查詢追蹤及設定服務。除了 X-Ray 本身提供的 API 之外,您也可以使用 X-Ray API 建立分析和視覺化應用程式。
AWS X-Ray 是否會將事件記錄到 AWS CloudTrail?
是。X-Ray 會將所有 API 呼叫記錄為管理事件。它還會將追蹤的呼叫以資料事件的形式紀錄,包括在其他 API 之間的 PutTraceSegments 和 GetTimeSeriesServiceStatistics。資料事件預設為不會記錄。若要記錄資料事件,您必須設定 CloudTrail 追蹤或事件資料存放區,以收集資料事件。
區域
問:哪些區域可使用 X-Ray?
請參閱區域產品與服務,了解詳細資訊。
問:是否可使用 X-Ray 來追蹤從應用程式或服務散佈到多個區域的請求?
是,您可以使用 X-Ray 追蹤通過多個區域之應用程式或服務的請求。X-Ray 資料會存放在已處理區域的本機上,但是它會包含足夠的資訊,讓用戶端應用程式能夠結合資料並提供一個全域追蹤檢視。會自動新增 AWS 服務的區域註解,但是客戶需要檢測自訂服務,才能新增區域註解以使用跨區域支援。
資料處理
問:X-Ray 需要多長時間才能提供追蹤資料?
傳送到 X-Ray 的追蹤資料通常會在服務收到資料之後 30 秒內提供擷取和篩選。
問:可以查詢多久之前的追蹤資料? X-Ray 會將追蹤資料存放多長時間?
X-Ray 會存放最近 30 天的追蹤資料。所以您可回溯查詢 30 天的追蹤資料。
問:為什麼有時候只能看到部分的追蹤?
X-Ray 盡最大的努力呈現完整的追蹤資訊。不過,在某些情況下 (連線能力問題、延遲收到片段等等),有可能 X-Ray API 只能提供部分的追蹤資訊。在這些情況下,X-Ray 會將追蹤標記為不完整或部分。
問:我的應用程式元件在它們自己的 AWS 帳戶下執行。是否可使用 X-Ray 收集各個 AWS 帳戶的資料?
是,X-Ray 常駐程式擔任的角色可將資料發佈到與執行常駐程式不同的其他帳戶。這可讓您將資料從應用程式中各種元件發佈到中央帳戶。
進一步了解 AWS X-Ray 定價