檢測您的應用程式 AWS X-Ray - AWS X-Ray

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

檢測您的應用程式 AWS X-Ray

重要

支援終止通知 – 在 2027 年 2 月 25 日, AWS X-Ray 將停止支援 AWS X-Ray SDKs 和協助程式。2027 年 2 月 25 日之後,您將不再收到更新或版本。如需時間軸的詳細資訊,請參閱 X-Ray SDK 和協助程式終止支援時間表和 以取得遷移至 OpenTelemetry 的資訊,請參閱從 X-Ray 檢測遷移至 OpenTelemetry 檢測

檢測您的應用程式涉及傳送傳入和傳出請求的追蹤資料,以及應用程式中的其他事件,以及每個請求的中繼資料。根據您的特定需求,您可以選擇或結合多種不同的檢測選項:

  • 自動檢測 – 以零程式碼變更來檢測您的應用程式,通常是透過組態變更、新增自動檢測代理程式或其他機制。

  • 程式庫檢測 – 進行最少的應用程式程式碼變更,以新增以特定程式庫或架構為目標的預先建置檢測,例如 AWS SDK、Apache HTTP 用戶端或 SQL 用戶端。

  • 手動檢測 – 在您要傳送追蹤資訊的每個位置,將檢測程式碼新增至您的應用程式。

有數個 SDKs、代理程式和工具可用於檢測您的應用程式以進行 X-Ray 追蹤。

使用 AWS Distro for OpenTelemetry 檢測您的應用程式

AWS Distro for OpenTelemetry (ADOT) 是以雲端原生運算基金會 (CNCF) OpenTelemetry 專案為基礎的 AWS 分佈。OpenTelemetry 提供一組開放原始碼 APIs、程式庫和代理程式,用於收集分散式追蹤和指標。此工具組是上游 OpenTelemetry 元件的分佈,包括 SDKs、自動檢測代理程式和由 測試、最佳化、保護和支援的收集器 AWS。

透過 ADOT,工程師可以一次檢測其應用程式,並將相關指標和追蹤傳送至多個 AWS 監控解決方案 AWS X-Ray,包括 Amazon CloudWatch 和 Amazon OpenSearch Service。

將 X-Ray 與 ADOT 搭配使用需要兩個元件:啟用 OpenTelemetry SDK 以與 X-Ray 搭配使用,以及啟用 AWS Distro for OpenTelemetry Collector 以與 X-Ray 搭配使用。如需搭配 AWS AWS X-Ray 和其他 使用 Distro for OpenTelemetry 的詳細資訊 AWS 服務,請參閱 AWS Distro for OpenTelemetry 文件

如需語言支援和用量的詳細資訊,請參閱 AWS GitHub 上的可觀測性

注意

您現在可以使用 CloudWatch 代理程式從 Amazon EC2 執行個體和內部部署伺服器收集指標、日誌和追蹤。CloudWatch 代理程式 1.300025.0 版及更新版本可以從 OpenTelemetry 或 X-Ray 用戶端 SDKs 收集追蹤,並將其傳送至 X-Ray。使用 CloudWatch 代理程式而非 AWS Distro for OpenTelemetry (ADOT) Collector 或 X-Ray 協助程式來收集追蹤,可協助您減少管理的代理程式數量。如需詳細資訊,請參閱《CloudWatch 使用者指南》中的 CloudWatch 代理程式主題。 CloudWatch

ADOT 包括下列項目:

ADOT 目前包含 JavaPython 的自動檢測支援。此外,ADOT 可透過 ADOT Managed AWS Lambda Layers,使用 Java、Node.js 和 Python 執行時間自動檢測 Lambda 函數及其下游請求。 https://aws-otel.github.io/docs/getting-started/lambda

適用於 Java 和 Go SDKs支援 X-Ray 集中式抽樣規則。如果您需要支援其他語言的 X-Ray 抽樣規則,請考慮使用 AWS X-Ray 開發套件。

注意

您現在可以傳送 W3C IDs 至 X-Ray。根據預設,使用 OpenTelemetry 建立的追蹤具有以 W3C 追蹤內容規格為基礎的追蹤 ID 格式。這與使用 X-Ray 開發套件或整合 X-Ray AWS 的服務建立IDs 格式不同。若要確保 X-Ray 接受 W3C 格式IDs,您必須使用 AWS X-Ray Exporter 版本 0.86.0 或更新版本,其中包含 ADOT Collector 版本 0.34.0 和更新版本。舊版匯出工具會驗證追蹤 ID 時間戳記,這可能會導致 W3C IDs 遭到拒絕。

使用 AWS X-Ray SDKs 檢測您的應用程式

AWS X-Ray 包含一組語言特定的 SDKs用於檢測您的應用程式,以將追蹤傳送至 X-Ray。每個 X-Ray 開發套件都提供下列項目:

  • 攔截程式,可新增至您的程式碼以追蹤傳入的 HTTP 請求

  • 用戶端處理常式可檢測您的應用程式用來呼叫其他 的 AWS SDK 用戶端 AWS 服務

  • 用來檢測對其他內部和外部 HTTP Web 服務的呼叫的 HTTP 用戶端

X-Ray SDKs也支援檢測對 SQL 資料庫的呼叫、自動 AWS SDK 用戶端檢測和其他功能。開發套件不會將追蹤資料直接傳送到 X-Ray,而是將 JSON 區段文件傳送到監聽 UDP 流量的協助程式程序。X-Ray 協助程式會緩衝佇列中的區段,並分批上傳至 X-Ray。

提供下列特定語言 SDKs:

X-Ray 目前包含 Java 的自動檢測支援。

選擇 AWS Distro for OpenTelemetry 和 X-Ray SDKs

X-Ray 隨附的SDKs是 提供的緊密整合檢測解決方案的一部分 AWS。 AWS Distro for OpenTelemetry 是更廣泛的產業解決方案的一部分,其中 X-Ray 只是許多追蹤解決方案之一。您可以使用任一方法在 X-Ray 中實作end-to-end追蹤,但請務必了解差異,以判斷對您最有用的方法。

如果您需要下列項目,建議您使用 AWS Distro for OpenTelemetry 檢測應用程式:

  • 無需重新檢測程式碼,即可將追蹤傳送至多個不同的追蹤後端

  • 支援各種語言的大量程式庫檢測,由 OpenTelemetry 社群維護

  • 完全受管的 Lambda 層,可封裝收集遙測資料所需的一切,而無需在使用 Java、Python 或 Node.js 時變更程式碼

    注意

    AWS Distro for OpenTelemetry 提供更簡單的 Lambda 函數檢測入門體驗。不過,由於 OpenTelemetry 提供的靈活性,您的 Lambda 函數將需要額外的記憶體,而且調用可能會遇到冷啟動延遲增加,這可能會導致額外的費用。如果您要最佳化低延遲,而且不需要 OpenTelemetry 的進階功能,例如可動態設定的後端目的地,建議您使用 AWS X-Ray 開發套件來檢測應用程式。

如果您需要下列項目,建議您選擇 X-Ray 開發套件來檢測您的應用程式:

  • 緊密整合的單一供應商解決方案

  • 與 X-Ray 集中式取樣規則整合,包括能夠從 X-Ray 主控台設定取樣規則,並在使用 Node.js、Python、Ruby 或 .NET 時自動跨多個主機使用這些規則