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