正在对您的应用程序进行检测 Amazon X-Ray - Amazon X-Ray
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

正在对您的应用程序进行检测 Amazon X-Ray

检测应用程序涉及发送应用程序内传入和出站请求及其他事件的跟踪数据,以及与每个请求相关的元数据。您可以根据自身的特定需求,从多种不同检测选项中进行选择或结合使用:

  • 自动检测 - 无需更改代码即可检测应用程序,常规方法包括更改配置、添加自动检测代理或使用其他机制。

  • 库插入 — 对应用程序代码进行最少的更改,以添加针对特定库或框架(例如 Amazon SDK、Apache HTTP 客户端或 SQL 客户端)的预建工具。

  • 手动检测 - 在想要发送跟踪信息的每个位置,向应用程序添加检测代码。

可以使用多种开发工具包、代理和工具来检测应用程序,实现 X-Ray 跟踪。

使用发行版对您的应用程序进行 Amazon 检测 OpenTelemetry

OpenTelemetry (ADOT) Amazon 发行版是基于云原生计算基金会 (CNCF) 项目的 Amazon 发行版。 OpenTelemetry OpenTelemetry 提供一组开源 API、库和代理,用于收集分布式跟踪和指标。该工具包是上游 OpenTelemetry 组件的发行版,包括经过测试、优化、保护和支持的软件开发工具包、自动检测代理和收集器。 Amazon

借助 ADOT,工程师只需对应用程序进行一次检测,即可将相关的指标和跟踪发送到多个 Amazon 监控解决方案 CloudWatch Amazon X-Ray,包括亚马逊和亚马逊 OpenSearch 服务。

将 X-Ray 与 ADOT 配合使用需要两个组件:启用 OpenTelemetry SDK 以与 X-Ray 配合使用,以及启用 Collecto OpenTelemetry r 的Amazon Distro 以与 X-Ray 配合使用。有关将 Amazon Distro OpenTelemetry 用于 with Amazon X-Ray 和 other 的更多信息 Amazon Web Services,请参阅Amazon 文档发行版。 OpenTelemetry

有关语言支持和用法的更多信息,请参阅上的 O Amazon bservability。 GitHub

注意

现在,您可以使用 CloudWatch 代理从 Amazon EC2 实例和本地服务器收集指标、日志和跟踪。 CloudWatch 代理版本 1.300025.0 及更高版本可以从或 OpenTelemetryX-Ray 客户端 SDK 收集痕迹,然后将其发送到 X-R ay。使用 CloudWatch 代理代替 Amazon Distro for OpenTelemetry (ADOT) Collector 或 X-Ray 守护程序来收集跟踪可以帮助您减少管理的代理数量。有关更多信息,请参阅《 CloudWatch 用户指南》中的CloudWatch 代理主题。

ADOT 包括以下内容:

ADOT 目前包括适用于 JavaPython 的自动检测支持。此外,ADOT 还支持通过 ADOT 托管 Lamb Amazon da 层使用 Java、Node.js 和 Python 运行时自动检测 Lambda 函数及其下游请求。

适用于 Java 和 Go 的 ADOT 软件开发工具包支持 X-Ray 集中采样规则。如果您需要支持其他语言的 X-Ray 采样规则,请考虑使用 S Amazon X-Ray DK。

注意

您现在可以向 X-Ray 发送发送 W3C 跟踪 ID。默认情况下,使用创建的跟踪 OpenTelemetry 具有基于 W3C 跟踪上下文规范的跟踪 ID 格式。这与使用 X-Ray SDK 或与 X-Ray 集成的 Amazon 服务创建的跟踪 ID 的格式不同。为确保 X-Ray 接受 W3C 格式的跟踪 ID,您必须使用Amazon X-Ray Exporter 版本 0.86.0 或更高版本,该版本包含在 ADOT Collector 版本 0.34.0 及更高版本中。先前版本的导出器会验证跟踪 ID 时间戳,这可能会导致 W3C 跟踪 ID 被拒绝。

使用 SDK 对应用程序进行 Amazon X-Ray 检测

Amazon X-Ray 包括一组特定于语言的 SDK,用于检测您的应用程序以向 X-Ray 发送跟踪。每个 X-Ray 开发工具包都提供以下内容:

  • 拦截器,可添加到您的代码中以跟踪传入 HTTP 请求

  • 客户端处理程序,用于检测 Amazon SDK 客户端,您的应用程序使用这些客户端来调用其他客户端 Amazon Web Services

  • HTTP 客户端,用于检测对其他内部和外部 HTTP Web 服务的调用

X-Ray SDK 还支持对 SQL 数据库进行检测调用、自动 Amazon SDK 客户端检测以及其他功能。该开发工具包不是直接将跟踪数据发送到 X-Ray;,而是将 JSON 分段文档发送到侦听 UDP 流量的进程守护程序进程。X-Ray 进程守护程序将分段缓冲在队列中,并将分段批量上传到 X-Ray。

提供了以下特定于编程语言的开发工具包:

X-Ray 目前包括适用于 Java 的自动检测支持。

在 Amazon Distro for OpenTelemetry 和 X-Ray SDK 之间进行选择

X-Ray 包含的开发工具包是 Amazon提供的紧密集成的检测解决方案的一部分。的 Amazon 发行版 OpenTelemetry 是更广泛的行业解决方案的一部分,在该解决方案中,X-Ray 只是众多追踪解决方案之一。您可以使用任何一种方法在 X-Ray 中实现 end-to-end 跟踪,但要确定最有用的方法,请务必了解其中的差异。

OpenTelemetry 如果您需要以下内容,我们建议您使用 Amazon Distro 来测试您的应用程序:

  • 无需重新分析代码即可将跟踪发送到多个不同的跟踪后端

  • Support 支持每种语言的大量图书馆工具,由社区维护 OpenTelemetry

  • 完全托管的 Lambda 层,使用 Java、Python 或 Node.js 时无需更改代码即可打包收集遥测数据所需的一切

    注意

    Amazon Distro for 为你的 Lambda 函数 OpenTelemetry 提供了更简单的入门体验。但是,由于 OpenTelemetry 提供的灵活性,您的 Lambda 函数将需要额外的内存,并且调用可能会遇到冷启动延迟增加的情况,这可能会导致额外费用。如果您正在针对低延迟进行优化,并且不需要 OpenTelemetry的高级功能,例如可动态配置的后端目标,则可能需要使用 Amazon X-Ray SDK 来检测您的应用程序。

如果您有以下需求,我们建议选择 X-Ray 开发工具包来检测应用程序:

  • 紧密集成的单一供应商解决方案

  • 与 X-Ray 集中采样规则集成,包括在 Node.js、Python、Ruby 或 .NET 时,能够从 X-Ray 控制台配置采样规则,以及跨多主机自动使用这些规则