一般性问题
问:什么是 AWS X-Ray?
AWS X-Ray 可以帮助开发人员分析与调试分布式生产应用程序,例如使用微服务架构构建的应用程序。借助 X-Ray,您可以了解应用程序及其底层服务的执行方式,从而识别导致性能问题和错误的根本原因并将其排除。X-Ray 可在请求通过应用程序时提供请求的端到端视图,并展示应用程序底层组件的映射。您可以使用 X-Ray 分析开发和生产中的应用程序,从简单的三层应用程序到包含上千种服务的复杂微服务应用程序。
问:为什么应该使用 X-Ray?
目前,如果您构建并运行分布式应用程序,则必须依靠按服务或按资源的流程,以便在该请求通过组成应用程序的各个组件时跟踪应用程序请求。由于您的应用程序运行时所在或所使用的框架、服务和资源的日志格式和存储介质多种多样,这使此问题变得更加复杂。您将很难关联各种数据段并创建请求从在最终用户或服务处发起时到您的应用程序返回响应期间的端到端视图。X-Ray 可提供以用户为中心的模型,而不是以服务或资源为中心的模型,从而收集与对应用程序发出的请求相关的数据。此模型使您能够在请求通过各种服务和资源时创建以用户为中心的请求视图。通过代表您关联和聚合数据,X-Ray 使您能够集中精力改善最终用户对应用程序的体验。
问:X-Ray 有何用途?
X-Ray 使您能够轻松做到以下几点:
- 创建服务映射 — 通过跟踪对您的应用程序发出的请求,X-Ray 可以创建应用程序所使用的服务映射。这可以为您提供应用程序中各项服务之间的连接视图,使您能够在跨 AWS 可用区或区域工作时创建依赖关系树、检测延迟或错误,并集中精力解决未按预期运行的服务等等。
- 识别错误和漏洞 — X-Ray 可通过分析对应用程序发出的每个请求的响应代码来自动突出显示应用程序代码中的漏洞或错误。这使您能够轻松调试应用程序代码,无需重现漏洞或错误。
- 构建您自己的分析和可视化应用程序 — X-Ray 可提供一组查询 API,您可以使用这些 API 来构建使用 X-Ray 所记录的数据的分析和可视化应用程序。
核心概念
问:什么是跟踪?
X-Ray 跟踪是一组共享相同跟踪 ID 的数据点。例如,当客户端向您的应用程序发出请求时,它会分配到一个唯一的跟踪 ID。当请求通过应用程序中的服务时,服务会使用这个唯一的跟踪 ID 将与请求相关的信息传递回 X-Ray。由应用程序中每种服务传递到 X-Ray 的信息是一个分段,而跟踪是多个分段的集合。
问:什么是分段?
X-Ray 分段可以封装分布式应用程序单个组件(如授权服务)的所有数据点。分段以注释的形式提供系统定义和用户定义数据,由一个或多个表示服务远程调用的子分段组成。例如,当应用程序为响应请求而调用数据库时,则可以为该请求创建一个分段,并包含表示数据库调用及其结果的子分段。子分段可以包含查询、所用表格、时间戳和错误状态等数据。
问:什么是注释?
X-Ray 注释是与分段相关的系统定义或用户定义数据。一个分段可包含多个注释。系统定义的注释包括由 AWS 服务添加到分段的数据,而用户定义的注释则是由开发人员添加到分段的元数据。例如,由应用程序创建的分段会自动注入 AWS 服务调用的区域数据,但您可以选择自行为非 AWS 服务调用添加区域数据。
问:什么是错误?
X-Ray 错误是与导致错误响应的调用分段相关的系统注释。错误包括用于将错误与源文件关联起来的错误消息、堆栈跟踪和任何其他信息(例如,版本或提交 ID)。
问:什么是采样?
要提供高性能且经济高效的体验,X-Ray 不会收集发送给应用程序的每个请求的数据。相反,它会从统计学的角度收集一定数量的请求的数据。请勿将 X-Ray 用作审核或合规性工具,因为它无法确保数据的完整性。
问:什么是 X-Ray 进程守护程序?
X-Ray 进程守护程序可收集跟踪,并将其发送到 X-Ray 服务,以便进行聚合、分析和存储。该进程守护程序使您可以更轻松地向 X-Ray 服务发送数据,而不是直接使用 API。
使用 AWS X-Ray
问:如何开始使用 X-Ray?
通过在应用程序中包含 X-Ray 语言软件开发工具包并安装 X-Ray 进程守护程序,便可以开始使用 X-Ray。有关更多信息,请参阅 X-Ray 用户指南。
问:可将 X-Ray 与哪些类型的应用程序配合使用?
X-Ray 可与任意大小的分布式应用程序配合使用,以跟踪和调试同步请求与异步请求。例如,X-Ray 可用于跟踪对利用 Amazon SQS 队列的 Web 应用程序或异步事件发出的 Web 请求。
问:可将 X-Ray 与哪些 AWS 服务配合使用?
您可以将 X-Ray 与在 EC2、ECS、Lambda、Amazon SQS、Amazon SNS 和 Elastic Beanstalk 上运行的应用程序配合使用。此外,X-Ray 软件开发工具包可使用 AWS 开发工具包自动捕获对 AWS 服务发出的 API 调用元数据。此外,X-Ray 软件开发工具包还可以为 MySQL 和 PostgreSQL 驱动程序提供附加组件。
问:需要对应用程序的代码进行哪些更改才能使用 X-Ray?
如果您使用的是 Elastic Beanstalk,则需要在应用程序代码中包含特定语言的 X-Ray 库。对于在 EC2 或 ECS 等其他 AWS 服务上运行的应用程序,您需要安装 X-Ray 进程守护程序并检测应用程序代码。
问:X-Ray 是否提供 API?
是,X-Ray 提供了一组 API,这些 API 可以注入请求数据、查询跟踪和配置服务。除了 X-Ray 提供的 API 之外,您还可以使用 X-Ray API 来构建分析和可视化应用程序。
AWS X-Ray 是否会将事件记录到 AWS CloudTrail?
符合。X-Ray 会将所有 API 调用记录为管理事件。它还会将对跟踪的调用记录为数据事件,包括对 PutTraceSegments 和 GetTimeSeriesServiceStatistics 以及其他 API 的调用。默认情况下,不记录数据事件。要记录数据事件,必须配置 CloudTrail 跟踪或事件数据存储以收集这些事件。
区域
问:X-Ray 在哪些区域提供?
有关详细信息,请参阅“区域性产品和服务”。
问:是否可以使用 X-Ray 跨多个区域跟踪来自应用程序或服务的请求?
可以,您可以使用 X-Ray 跨多个区域跟踪流经应用程序或服务的请求。X-Ray 数据会在本地存储到处理区域中,但可提供足够的信息,以便客户端应用程序能够整合数据,并提供跟踪的全局视图。AWS 服务的区域注释可自动添加,但是,客户需要检测自定义服务以添加区域注释,从而利用跨区域支持。
数据处理
问:需要多久才能在 X-Ray 中使用跟踪数据?
发送到 X-Ray 的跟踪数据通常在服务收到这些数据后的 30 秒内可供检索和筛选。
问:可以查询多久以前的跟踪数据? X-Ray 可将跟踪数据存储多长时间?
X-Ray 可存储过去 30 天内的跟踪数据。这使您能够查询过去 30 天的内跟踪数据。
问:为什么有时会看到部分跟踪信息?
X-Ray 会尽最大努力展示完整的跟踪信息。但是,在有些情况(出现连接问题、接收分段出现延迟等)下,X-Ray API 所提供的跟踪信息可能不完整。在这些情况下,X-Ray 会将这类跟踪信息标记为“不完整”或“部分”。
问:我的应用程序组件在其自己的 AWS 账户中运行。我是否可以使用 X-Ray 来收集各个 AWS 账户中的数据?
可以,X-Ray 进程守护程序可担任角色,以便将数据发布到与它在其中运行的账户不同的账户中。这使您能够将来自应用程序各组件的数据发布到中央账户中。
了解有关 AWS X-Ray 定价的更多信息