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

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

Amazon X-Ray使用案例和要求

您可以使用 X-Ray 开发工具包和Amazon服务集成到分析对在本地或Amazon计算服务,如 Amazon EC2、Elastic Beanstalk、亚马逊云服务器和Amazon Lambda。

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


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

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


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

许多分析场景只需要配置更改。例如,您可以将所有传入 HTTP 请求和对下游调用分析为Amazon服务。为做到这一点,您将适用于 Java 的 X-Ray 开发工具包添加到 servlet 配置中,并将Amazon SDK for Java工具程序子模块作为构建依赖关系。对于高级分析,您可以修改应用代码来自定义和注释 SDK 发送给 X-Ray 的数据。

支持的语言和框架

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

C#

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

参阅 适用于 .NET 的Amazon X-Ray开发工具包 了解更多信息。

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

  • C# .NET Core onAmazon Lambda— 对 Lambda 函数配置启用 X-Ray 以分析传入请求。

Go

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

在 上Amazon Lambda,您可以使用 Lambda X-Ray 集成来分析传入请求。将适用于 Go 的 X-Ray 开发工具包添加到函数以进行完整分析。

参阅 适用于 Go 的 Amazon X-Ray 开发工具包 了解更多信息。

  • Go Web 应用程序— 使用适用于 Go 的 X-Ray 开发工具包处理路由上的传入请求。

  • GoAmazon Lambda— 对 Lambda 函数配置启用 X-Ray 以分析传入请求。添加适用于 Go 的 X-Ray 开发工具包Amazon开发工具包客户端、HTTP 和 SQL 客户端。

Java

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

在 上Amazon Lambda,您可以使用 Lambda X-Ray 集成来分析传入请求。将适用于 Java 的 X-Ray 开发工具包添加到函数以进行完整分析。

参阅 适用于 Java 的 Amazon X-Ray 开发工具包 了解更多信息。

  • Tomcat添加伺服过滤器添加到您的部署描述符(web.xml)分析传入请求。

  • Spring 靴添加伺服过滤器添加到您的WebConfig类分析传入请求。

  • Java 上的 JavaAmazon Lambda— 对 Lambda 函数启用 X-Ray 以分析传入请求。添加适用于 Java 的 X-Ray 开发工具包Amazon开发工具包客户端、HTTP 和 SQL 客户端。

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

Node.js

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

在 上Amazon Lambda,您可以使用 Lambda X-Ray 集成来分析传入请求。将适用于 Node.js 的 X-Ray 开发工具包添加到函数以进行完整分析。

参阅 Amazon 适用于 Node.js 的 X-Ray 软件开 了解更多信息。

  • 快速或重新分析使用适用于 Node.js 中间件的 X-Ray 开发工具包分析传入请求。

  • Node.jsAmazon Lambda— 对 Lambda 函数启用 X-Ray 以分析传入请求。添加适用于 Node.js 的 X-Ray 开发工具包Amazon开发工具包、HTTP 和 SQL 客户端

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

Python

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

在 上Amazon Lambda,您可以使用 Lambda X-Ray 集成来分析传入请求。Python 将适用于 Python 的 X-Ray 开发工具包添加到函数以进行完整分析。

参阅 适用于 Python 的 Amazon X-Ray 开发工具包 了解更多信息。

  • Django 或药瓶使用适用于 Python 中间件的 X-Ray 开发工具包分析传入请求。

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

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

Ruby

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

  • Rails— 将 SDK for Ruby Gem 和 Ray 的 X-Ray 开发工具包添加到您的 gem 文件中,并配置记录器来分析传入请求。

  • 其他框架手动创建分段,以分析每个传入请求。

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

支持Amazon服务

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

  • 活动分析— 采样和分析传入请求。

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

  • 请求跟踪— 将跟踪标头添加到所有传入请求并将其向下游传播。

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

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

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

  • Amazon API Gateway— 主动和被动仪器插入。API Gateway 使用采样规则来确定要记录的请求,并将网关阶段的节点添加到您的服务地图。了解更多

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

  • Amazon 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 在这些平台上运行守护程序,或者使用XRayEnabled选项aws:elasticbeanstalk:xray命名空间。了解更多

  • Amazon EventBridge— 被动仪器插入。如果使用 X-Ray SDK 检测将事件发布到 EventBridge 的服务,事件目标将接收跟踪标头,并可以继续传播原始跟踪 ID。了解更多

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

  • Amazon Simple Queue Service— 被动仪器插入。如果服务使用 X-Ray 开发工具包跟踪请求,Amazon SQS 可以发送跟踪标头,并继续使用一致的跟踪 ID 将原始跟踪从发件人传播给使用者。了解更多

代码和配置更改

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

代码和配置更改示例

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

  • 生成配置— 将适 SDK for Java 子模块的 X-Ray 开发工具包作为编译时依赖项来分析所有对Amazon服务以及诸如 Amazon DynamoDB 表、Amazon SQS 队列和 Amazon S3 存储桶之类的资源。

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

  • 类或对象配置— 要分析 Java 中的传出 HTTP 调用,请导入适用于 Java 的 X-Ray SDK for Java 具包版本的HttpClientBuilder而不是 Apache.org 版本。

  • 功能更改— 将请求处理程序添加到AmazonSDK 客户端对分析客户端的调用Amazon服务。创建子分段以对下游调用进行分组,并将调试信息与注释和元数据一起添加到分段中。