AWS X-Ray 使用案例和要求 - AWS X-Ray
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

AWS X-Ray 使用案例和要求

您可以使用 X-Ray 开发工具包和 AWS 服务集成来分析对在本地或 AWS 计算服务(如 Amazon EC2、Elastic Beanstalk、Amazon ECS 和 AWS Lambda)上运行的应用程序的请求。

要分析您的应用程序代码,可使用 X-Ray 开发工具包。该开发工具包记录有关传入请求和传出请求的数据,并将其发送到 X-Ray 守护程序,该守护程序将数据分批中继到 X-Ray。例如,当应用程序调用 DynamoDB 以从 DynamoDB 表中检索用户信息时,X-Ray 开发工具包将同时记录客户端请求和对 DynamoDB 下游调用的数据。


      X-Ray 开发工具包同时记录客户端请求和对 DynamoDB 下游调用的数据

其他 AWS 服务通过与 X-Ray 集成,使您能够轻松地分析您应用程序的组件。服务集成可以包括向传入请求添加跟踪标头、向 X-Ray 发送跟踪数据或者运行 X-Ray 守护程序。例如,AWS Lambda 可以将有关请求的跟踪数据发送给您的 Lambda 函数,并在工作线程上运行 X-Ray 守护程序,让 X-Ray 开发工具包使用起来更简单。


      Lambda 与 X-Ray 开发工具包的集成

许多分析场景只需要配置更改。例如,您可以分析您的 Java 应用程序发出的所有传入 HTTP 请求和对 AWS 服务的下游调用。为做到这一点,您将X-Ray SDK for Java的筛选器添加到 servlet 配置,并将 AWS SDK for Java Instrumentor 子分段作为生成依赖项。对于高级分析,您可以修改应用代码来自定义和注释 SDK 发送到 X-Ray 的数据。

支持的语言和框架

AWS X-Ray 提供工具和集成来支持各种语言、框架和平台。

C#

在 Windows Server 上,您可以使用X-Ray SDK for .NET分析传入请求、AWS 开发工具包客户端、SQL 客户端和 HTTP 客户端。在 AWS Lambda 上,您可以使用 Lambda X-Ray 集成来分析传入请求。

有关更多信息,请参阅适用于 .NET 的 AWS X-Ray 开发工具包

  • Windows Server 上的 .NET – 向您的 HTTP 配置添加消息处理程序以分析传入请求。

  • AWS Lambda 上的 C# .NET 内核 – 对 Lambda 函数配置启用 X-Ray 以分析传入请求。

Go

在任何 Go 应用程序中,您可以使用X-Ray SDK for Go类分析传入请求、AWS 开发工具包客户端、SQL 客户端和 HTTP 客户端。自动请求分析可用于使用 HTTP 处理程序的应用程序。

在 AWS Lambda 上,您可以使用 Lambda X-Ray 集成来分析传入请求。将X-Ray SDK for Go添加到函数以进行完整分析。

有关更多信息,请参阅适用于 Go 的 AWS X-Ray 开发工具包

  • Go Web 应用程序 – 使用X-Ray SDK for Go HTTP 处理程序处理路由上的传入请求。

  • AWS Lambda 上的 Go – 对 Lambda 函数配置启用 X-Ray 以分析传入请求。添加X-Ray SDK for Go以分析 AWS 开发工具包、HTTP 和 SQL 客户端。

Java

在任何 Java 应用程序中,您可以使用X-Ray SDK for Java类分析传入请求、AWS 开发工具包客户端、SQL 客户端和 HTTP 客户端。自动请求分析可用于支持 Java servlet 的框架。可通过 Instrumentor 子模块获得自动开发工具包分析。

在 AWS Lambda 上,您可以使用 Lambda X-Ray 集成来分析传入请求。将X-Ray SDK for Java添加到函数以进行完整分析。

有关更多信息,请参阅适用于 Java 的 AWS X-Ray 开发工具包

  • Tomcat – 向您的部署描述符 (web.xml) 添加 servlet 筛选器以分析传入请求。

  • Spring Boot – 向您的 WebConfig添加 servlet 筛选器以分析传入请求。

  • AWS Lambda 上的 Java – 对 Lambda 函数启用 X-Ray 以分析传入请求。添加X-Ray SDK for Java以分析 AWS 开发工具包、HTTP 和 SQL 客户端。

  • 其他框架 – 如果您的框架支持 servlet,则添加 servlet 筛选器;否则,为每个传入请求手动创建分段。

Node.js

在任何 Node.js 应用程序中,您可以使用X-Ray SDK for Node.js类分析传入请求、AWS 开发工具包客户端、SQL 客户端和 HTTP 客户端。自动请求分析可用于使用 Express 和 Restify 框架的应用程序。

在 AWS Lambda 上,您可以使用 Lambda X-Ray 集成来分析传入请求。将X-Ray SDK for Node.js添加到函数以进行完整分析。

有关更多信息,请参阅AWS X-Ray SDK for Node.js

  • Express 或 Restify使用X-Ray SDK for Node.js中间件分析传入请求。

  • AWS Lambda 上的 Node.js – 对 Lambda 函数启用 X-Ray 以分析传入请求。添加X-Ray SDK for Node.js以分析 AWS 开发工具包、HTTP 和 SQL 客户端。

  • 其他框架 – 为每个传入请求手动创建分段。

Python

在任何 Python 应用程序中,您可以使用X-Ray SDK for Python类分析传入请求、AWS 开发工具包客户端、SQL 客户端和 HTTP 客户端。自动请求分析可用于使用 Django 和 Flask 框架的应用程序。

在 AWS Lambda 上,您可以使用 Lambda X-Ray 集成来分析传入请求。将X-Ray SDK for Python添加到函数以进行完整分析。

有关更多信息,请参阅适用于 Python 的 AWS X-Ray 开发工具包

  • Django 或 Flask使用X-Ray SDK for Python中间件分析传入请求。

  • AWS Lambda 上的 Python – 对 Lambda 函数配置启用 X-Ray 以分析传入请求。添加X-Ray SDK for Python以分析 AWS 开发工具包、HTTP 和 SQL 客户端。

  • 其他框架 – 为每个传入请求手动创建分段。

Ruby

在任何 Ruby 应用程序中,您可以使用适用于 Ruby 的 X-Ray 开发工具包类分析传入请求、AWS 开发工具包客户端、SQL 客户端和 HTTP 客户端。自动请求分析可用于使用 Rails 框架的应用程序。

  • Rails – 将适用于 Ruby 的 X-Ray 开发工具包 gem 和 railtie 添加到 gemfile,并在初始化程序中配置记录器以分析传入请求。

  • 其他框架 – 为每个传入请求手动创建分段

如果 X-Ray 开发工具包不适用于您的语言或平台,您可以手动生成跟踪数据并将其发送给 X-Ray 守护程序,或者直接发送给 X-Ray API

支持的 AWS 服务

有多个 AWS 服务提供 X-Ray 集成集成服务提供不同级别的集成,可以包括采样和向传入请求添加标头、运行 X-Ray 守护程序以及自动将跟踪数据发送到 X-Ray。

  • 主动分析 – 采样和分析传入请求。

  • 被动分析 – 分析已经由其他服务采样的请求。

  • 请求跟踪 – 对所有传入请求添加一个跟踪标头,并将其向下游传播。

  • 工具 – 运行 X-Ray 守护程序以从 X-Ray 开发工具包接收分段。

以下服务提供了 X-Ray 集成:

  • AWS Lambda – 所有运行时上的传入请求的主动和被动分析。AWS Lambda 将向服务地图添加两个节点,一个针对 AWS Lambda 服务,另一个针对函数。当启用分析时,AWS Lambda 还在 Java 和 Node.js 运行时上运行 X-Ray 守护进程以用于 X-Ray 开发工具包。了解更多

  • Amazon API Gateway – 主动和被动分析。API 网关 使用采样规则来确定要记录的请求,并向服务地图添加网关阶段的节点。了解更多

  • Elastic Load Balancing – 应用程序负载均衡器上的请求跟踪。应用程序负载均衡器会将跟踪 ID 添加到请求标头,然后将它发送到目标组。了解更多

  • AWS Elastic Beanstalk – 工具。Elastic Beanstalk 在以下平台上包含 X-Ray 守护程序:

    • Java SE – 2.3.0 及更高版本的配置

    • Tomcat – 2.4.0 及更高版本的配置

    • Node.js – 3.2.0 及更高版本的配置

    • Windows Server – 除了 2016 年 12 月 9 日起发布的 Windows Server Core 以外的所有配置。

    您可以使用 Elastic Beanstalk 控制台告知 Elastic Beanstalk 在这些平台上运行守护程序,或者在 aws:elasticbeanstalk:xray 命名空间中使用 XRayEnabled 选项。了解更多

  • Amazon Simple Notification Service – 被动分析。如果 Amazon SNS 发布者使用 X-Ray 开发工具包跟踪其客户端,订阅者可以检索跟踪标头并继续使用相同的跟踪 ID 传播发布者的原始跟踪。了解更多

  • Amazon Simple Queue Service – 被动分析。如果某项服务使用 X-Ray 开发工具包跟踪请求,则 Amazon SQS 可以发送跟踪标头,并继续使用一致的跟踪 ID 将原始跟踪从发送者传播到使用者。了解更多

代码和配置更改

可以生成大量的跟踪数据,而无需对您的代码进行任何功能方面的更改。详细的前端和下游调用跟踪要求只对生成和部署时配置进行最少量的更改。

代码和配置更改示例

  • AWS 资源配置 – 更改 AWS 资源设置以分析对 Lambda 函数的请求。通过更改选项设置,对您的 Elastic Beanstalk 环境中的实例运行 X-Ray 守护程序。

  • 生成配置 – 将X-Ray SDK for Java子模块作为编译时依赖项来分析对 AWS 服务和对资源(如 Amazon DynamoDB 表、Amazon SQS 队列和 Amazon S3 存储桶)的所有下游请求。

  • 应用程序配置 – 分析传入 HTTP 请求,将 servlet 筛选器添加到您的 Java 应用程序,或者使用X-Ray SDK for Node.js作为您的 Express 应用程序上的中间件。更改采样规则并启用插件,以分析运行您的应用程序的 Amazon EC2、Amazon ECS 和 AWS Elastic Beanstalk 资源。

  • 类或对象配置 – 要分析 Java 中的传出 HTTP 调用,请导入X-Ray SDK for Java版本而非 Apache.org 版本的 HttpClientBuilder

  • 功能更改 – 向 AWS 开发工具包客户端添加请求标头,以分析客户端对 AWS 服务的调用。创建子分段以对下游调用进行分组,并将调试信息与注释和元数据一起添加到分段中。