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

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

AWS X-Ray 概念

AWS X-Ray 从服务接收数据 细分市... X-Ray 然后将有一个常见请求的部分分组 跟踪... X-Ray 处理跟踪以生成 服务图表 提供您应用程序的视觉表示。

Segments

运行应用程序逻辑的计算资源发送有关其工作的数据 细分市. 分段提供资源的名称、有关请求的详细信息以及完成的工作详情。例如,当 HTTP 请求到达您的应用程序时,它可以记录下列相关数据:

  • 主机 – 主机名、别名或IP地址

  • 请求 – 方法、客户端地址、路径、用户代理

  • 回答 – 状态、内容

  • 完成的工作 – 开始时间和结束时间、子段

  • 发生的问题错误、故障和异常,包括例外堆栈的自动捕获。


        SCOREKEEP的分段数据

TheThethe X-Ray SDK从请求和响应标头、应用程序中的代码以及运行其运行的AWS资源的元数据中收集信息。您可以通过修改应用程序配置或代码来选择要收集的数据,以分析传入请求、下游请求和 AWS 开发工具包客户端。

转发的请求

如果负载均衡器或者其他中介向您的应用程序转发了请求,则 X-Ray 会从请求的 X-Forwarded-For 标头中提取客户端 IP,而不是从 IP 数据包中的源 IP 提取。为转发的请求记录的客户端 IP 可以伪造,所以不应该信任。

您可以使用 X-Ray SDK以记录其他信息,如 注释和元数据。有关分段和子分段中记录的结构和信息的详情,请参阅 AWS X-Ray 分段文档. 分段文件可以是 64 kB 尺寸。

Subsegments

一个细分市场可以分解完成工作的数据 细分市场. 子细分市场提供更详细的计时信息和有关您的应用程序执行原始请求的下游呼叫的详细信息。子节点可以包含有关AWS服务、外部HTTPAPI或SQL数据库呼叫的其他详细信息。您甚至可以定义任意子分段以分析特定函数或应用程序中的代码行。


        细分市场提供更细致的信息

对于不会发送自己分段的服务,例如 Amazon DynamoDB, X-Ray 使用子段生成 推断细分市场 以及服务地图上的下游节点。这样您可以查看所有下游依赖项,即使它们不支持跟踪或者是外部依赖项也是如此。

子分段表示从您应用程序的角度将下游调用视为客户端。如果还检测到下游服务,其发送的段将替换从上游客户端子段生成的推断段的数据。服务图上的节点使用来自服务分段的信息 (如果可用),而两个节点之间的边缘节点使用上游服务的子分段。

例如,当您呼叫时 DynamoDB 通过仪表化AWSSDK客户端, X-Ray SDK记录该呼叫的子段。 DynamoDB 不会发送一个细分市场,所以跟踪中的推断分段 DynamoDB 服务图表上的节点,以及您的服务与 DynamoDB 所有内容都包含来自子段的信息。


        分析过的应用程序与  之间的边缘节点。DynamoDB.

当您使用仪表应用程序呼叫另一个检测的服务时,下游服务会发送其自己的分段,以记录其在子节点中记录的上游服务的同一个呼叫的视图。在服务图中,这两个服务的节点都包含来自这些服务的分段的计时和错误信息,而它们之间的边缘节点包含来自上游服务的分段的信息。


        已检测应用程序调用另一个已检测的应用程序。

这两个视角都非常有用,因为下游服务精确地记录该应用程序开始和结束处理请求的时间,而上游服务记录往返延迟,包括在两个服务之间传输时请求所花费的时间。

服务图表

X-Ray 使用应用程序发送的数据生成 服务图表. 每个向 X-Ray 发送数据的 AWS 资源在图中都显示为一项服务。边缘 将合作的服务连接到服务请求。边缘将客户端连接到您的应用程序,又将您的应用程序连接到它所使用的下游服务和资源。

服务名称

分段的 name 应与生成该分段的服务的域名或逻辑名相符。但这不是强制要求。任何拥有 PutTraceSegments 权限的应用程序均可以发送任何名称的分段。

服务图是一份JSON文档,包含组成应用程序的服务和资源的信息。TheThethe X-Ray 控制台使用服务图表生成可视化效果或 服务地图.


        服务地图

对于分布式应用程序,X-Ray 将处理具有相同跟踪 ID 的请求的服务的节点组合成一个服务图。请求点击的第一项服务 跟踪标题 它在其呼叫的前端和服务之间传播。

例如, 记分保存 运行调用微服务的WebAPI(an AWS Lambda 函数)使用node.js库生成随机名称。TheThethe X-Ray SDK for Java 生成跟踪ID并将其包括在呼叫中 Lambda... Lambda 发送跟踪数据并将跟踪ID传递到函数。TheThethe X-Ray SDK for Node.js 还使用跟踪ID发送数据。因此,API的节点, Lambda 服务,以及 Lambda 功能显示为单独但已连接的服务地图上的节点。


        API、Lambda服务和Lambda函数的节点显示为独立但连接的节点

服务图数据是为 保留的。30 天.

Traces

A 跟踪ID 通过应用程序跟踪请求的路径。跟踪会收集单个请求生成的所有段。该请求通常是通过负载平衡器进行的HTTPGET或发布请求,点击您的应用代码,并生成对其他AWS服务或外部WebAPI的下游呼叫。HTTP 请求与之交互的第一个受支持服务将向请求中添加一个跟踪 ID 标头,并向下游传播该标头以跟踪延迟、处置和其他请求数据。


        跟踪时间表视图,收集单个请求生成的所有分段

服务图数据是为 保留的。30 days.

Sampling

为确保有效跟踪并提供应用程序服务的请求的代表性样本, X-Ray SDK应用 采样 确定要跟踪哪些请求的算法。默认情况下,X-Ray 开发工具包记录 。每秒的第一个请求,以及任何额外请求中的 5%.

为避免在入门时发生服务费用,默认采样率为保守的。您可以配置 X-Ray 以修改默认采样规则并配置基于服务或请求的属性应用采样的其他规则。

例如,您可能希望禁用采样并跟踪所有调用的请求,以修改状态或处理用户帐户或事务。对于量非常大的只读调用,例如后台轮询、运行状况检查或连接维护,您采用较低的采样率仍可获取足够的数据来了解出现的任何问题。

有关更多信息,请参阅 在 X-Ray 控制台中配置采样规则.

跟踪标题

所有请求都被跟踪,直到一个可配置的最低限度。在达到最低要求后,追踪一定比例的请求,以避免不必要的成本。The sampling decision and trace ID are added to HTTP requests in 跟踪标题 名称 X-Amzn-Trace-Id...第一个 X-Ray-请求命令添加跟踪标题的集成服务,该标题由 X-Ray SDK并包含在响应中。

例 具有根跟踪 ID 和采样决策的跟踪标头

X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1
跟踪标头安全性

跟踪标题可以从 X-Ray SDK, AWS 服务或客户请求。应用程序可以从传入请求中删除 X-Amzn-Trace-Id,避免由于用户向其请求中添加跟踪 ID 或采样决策而导致出现问题。

如果请求源自仪表应用程序,跟踪标题也可以包含父部门ID。例如,如果应用程序使用分析的 HTTP 客户端调用下游 HTTP Web API,则 X-Ray 开发工具包将原始请求的分段 ID 添加到下游请求的跟踪标头中。为下游请求提供服务的分析的应用程序可以记录父分段 ID 以连接两个请求。

例 跟踪标头带有根跟踪 ID、父分段 ID 和采样决策

X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

筛选条件表达式

即使使用采样,复杂应用程序也会生成大量数据。TheThethe AWS X-Ray 控制台提供了服务图表的易于浏览的视图。它显示了健康和性能信息,帮助您识别应用程序中优化的问题和机会。对于高级跟踪,您可以深入查看各个请求或使用的跟踪 筛选表达式 查找与特定路径或用户相关的跟踪。


        深入查看各个请求的跟踪

Groups

通过扩展筛选条件表达式,X-Ray 也支持组功能。通过使用筛选条件表达式,您可以定义接受跟踪进入组的标准。

您可以通过名称或亚马逊资源名称(ARN)来调用分组,以生成其自己的服务图表、跟踪摘要,以及 Amazon CloudWatch 度量。创建组后,将根据组筛选器表达式检查传入跟踪,因为它们存储在 X-Ray 服务。度量 对于数字 将符合每个标准的跟踪发布到 CloudWatch 每分钟。

更新组的筛选条件表达式不会更改已记录的数据。更新仅应用于后续跟踪。这可能会导致新旧表达式的合并图表。要避免这种情况,请删除当前组,然后创建一个新的。

注意

按照与筛选器表达式匹配的检索跟踪数量来计算组。有关详细信息,请参阅 AWS X-Ray 定价.

有关组的更多信息,请参阅 在中配置组 X-Ray 控制台.

注释和元数据

当您仪器应用时, X-Ray SDK记录有关传入和传出请求的信息, AWS 使用的资源和应用本身。您可以向分段文档中添加其他信息作为注释和元数据。注释和元数据在跟踪级别聚合,并且可以添加到任何分段或子段。

注释 是一个简单的密钥值对,可用于 筛选表达式. 使用注释记录要用于对控制台中的跟踪进行分组的数据或在调用 GetTraceSummaries API 时使用的数据。

X-Ray 最多为每个跟踪的 50 条注释编制索引。

元数据 关键值对与任何类型的值(包括对象和列表)的值,但未指定。使用元数据记录要存储在跟踪中但不需要用于搜索跟踪的数据。

您可以在 X-Ray 控制台的分段或子分段详情中查看注释和元数据。


        可以在 X-Ray 控制台的分段或子分段详情中查看注释和元数据

错误、故障和异常

X-Ray 跟踪在您的应用程序代码中发生的错误以及下游服务返回的错误。错误分类如下。

  • Error – 客户端错误(400 系列错误)

  • Fault – 服务器故障(500 系列错误)

  • Throttle – 限制错误(429 请求过多)

如果在您的应用程序为某个分析的请求提供服务时发生异常,X-Ray 开发工具包会记录有关异常的详细信息,包括堆栈跟踪 (如果可用)。您可以在 细分市场详情 在 X-Ray 控制台。