檢測您的申請 AWS X-Ray - AWS X-Ray

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

檢測您的申請 AWS X-Ray

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

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

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

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

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

使用發行 AWS 版檢測您的應用程式 OpenTelemetry

該發行 AWS 版 OpenTelemetry (ADOT)是基於雲原生計算基礎(CNCF)項目的 AWS 發行版。 OpenTelemetry OpenTelemetry 提供一組開放原始碼 API、程式庫和代理程式,以收集分散式追蹤和指標。此工具組是上游 OpenTelemetry 元件的散佈版本,包括 SDK、自動檢測代理程式,以及經過測試、最佳化、保護和支援的收集器。 AWS

有了 ADOT,工程師只需一次測試應用程式,就可以將相關的指標和追蹤傳送到包括 Amazon 和 Amazon Ser CloudWatch vice 在內的多個 AWS 監控解決方案。 AWS X-Ray OpenSearch

將 X-Ray 與 ADOT 搭配使用需要兩個元件:啟用可與 X-Ray 搭配使用的 OpenTelemetry SDK,以及啟用可與 X-Ray 搭配使用的 OpenTelemetry 收集器發行AWS 版。 OpenTelemetry 有關使用發行版 AWS X-Ray 和其他 AWS 版本的更多信息 AWS 服務,請參閱發行AWS 版的 OpenTelemetry文檔。

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

注意

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

ADOT 包括以下內容:

ADOT 目前包括對 Java 和 Python 的自動檢測支援。此外,亞朵透過 ADOT 管理的 AWS Lambda 層,透過 Java、Node.js 和 Python 執行階段,啟用 Lambda 函數及其下游請求的自動檢測。

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

注意

您現在可以發送 W3C 跟踪 ID 到 X-Ray。根據預設,使用建立的追蹤具 OpenTelemetry 有以 W3C 追蹤內容規格為基礎的追蹤 ID 格式。這與使用 X-Ray SDK 或透過與 X-Ray 整合的 AWS 服務所建立的追蹤 ID 格式不同。為了確保 X-Ray 接受 W3C 格式的追蹤 ID,您必須使用AWS X-Ray 匯出程式版本 0.86.0 或更新版本,該版本包含在 ADOT 收集器 0.34.0 及更新版本中。舊版匯出程式會驗證追蹤識別碼時間戳記,這可能會導致 W3C 追蹤識別碼遭到拒絕。

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

AWS X-Ray 包括一組特定於語言的 SDK,用於檢測您的應用程序以將跟踪發送到 X-Ray。每個 X-Ray SDK 都提供以下內容:

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

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

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

X-Ray SDK 也支援檢測對 SQL 資料庫的呼叫、自動 AWS SDK 用戶端檢測和其他功能。SDK 不會將追蹤資料直接傳送至 X-Ray,而是將 JSON 區段文件傳送至偵聽 UDP 流量的精靈程序。X-Ray 守護程序緩衝隊列中的段,並將其批量上傳到 X-Ray。

提供下列語言特定的 SDK:

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

在 AWS 發行版 OpenTelemetry 和 X-Ray SDK 之間進行選擇

X-Ray 隨附的 SDK 是由 AWS提供的緊密集成儀器解決方案的一部分。發行 AWS 版 OpenTelemetry 是更廣泛的行業解決方案的一部分,其中 X-Ray 只是眾多跟踪解決方案之一。您可以使用任何一種方法在 X-Ray 中實現 end-to-end 跟踪,但是了解差異以確定最有用的方法非常重要。

OpenTelemetry 如果您需要以下內容,我們建議您使用 AWS Distro 檢測您的應用程序:

  • 能夠將跟踪發送到多個不同的跟踪後端,而無需重新檢測代碼

  • Support 由社區維護的每種語言的大量庫工具 OpenTelemetry

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

    注意

    AWS 用於測試 Lambda 函數的發行版 OpenTelemetry 提供了更簡單的入門體驗。但是,由於靈活性 OpenTelemetry 提供,您的 Lambda 函數需要額外的記憶體,而呼叫可能會遇到冷啟動延遲增加的情況,這可能會導致額外的費用。如果您要針對低延遲進行最佳化,而且不需要 OpenTelemetry動態設定後端目標等進階功能,您可能需要使用 AWS X-Ray SDK 來檢測您的應用程式。

如果您需要以下條件,我們建議您選擇 X-Ray SDK 來檢測您的應用程式:

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

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