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

使用 AWS X-Ray 进行跟踪

您可以使用 AWS X-Ray 在 AWS AppSync 中执行请求时跟踪这些请求。您可以在 X-Ray 可用的所有 AWS 区域中将 X-Ray 与 AWS AppSync 结合使用。X-Ray 详细介绍了整个 GraphQL 请求。这使您能够分析 API 及其基础解析器和数据源中的延迟。您可以使用 X-Ray 服务地图查看请求的延迟,包括与 X-Ray 集成的任何 AWS 服务。您还可以配置采样规则,以告知 X-Ray 根据您指定的标准以哪种采样率记录哪些请求。

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

设置和配置

您可以通过 AWS AppSync 控制台对 GraphQL API 启用 X-Ray 跟踪。

  1. 登录到 AWS AppSync 控制台。

  2. 从导航面板中选择 Settings (设置)

  3. X-Ray 下,开启 Enable X-Ray (启用 X-Ray)

  4. 选择保存。现在已为您的 API 启用 X-Ray 跟踪。

如果您使用的是 AWS CLI 或 AWS CloudFormation,您也可以在创建新的 AWS AppSync API 或更新现有 AWS AppSync API 时启用 X-Ray 跟踪,方法是将 xrayEnabled 属性设置为 true

为 AWS AppSync API 启用 X-Ray 跟踪后,系统会在您的账户中自动创建具有相应权限的 AWS Identity and Access Management服务相关角色。这允许 AWS AppSync 以安全的方式将跟踪发送到 X-Ray。

使用 X-Ray 跟踪您的 API

采样

通过使用采样规则,您可以控制您在 AWS AppSync 中记录的数据量,并即刻修改采样行为而不必修改或重新部署您的代码。例如,此规则对 API ID 为 3n572shhcpfokwhdnq1ogu59v6 的 GraphQL API 的请求进行采样。

  • 规则名称test-sample

  • 优先级10

  • 容器大小10

  • 固定速率10

  • 服务名称*

  • 服务类型AWS::AppSync::GraphQLAPI

  • HTTP 方法*

  • 资源 ARNarn:aws:appsync:us-west-2:123456789012:apis/3n572shhcpfokwhdnq1ogu59v6

  • 主机*

了解跟踪

为 GraphQL API 启用 X-Ray 跟踪时,您可以使用 X-Ray 跟踪详细信息页面,以检查有关向 API 发出的请求的详细延迟信息。以下示例显示了此特定请求的跟踪视图以及服务地图。该请求是针对具有 Post 类型且名为 postAPI 的 API 发出的,其数据包含在名为 PostTable-Example 的 Amazon DynamoDB 表中。

下面的跟踪映像对应于以下 GraphQL 查询:

query getPost { getPost(id: "1") { id title } }

getPost 查询的解析器使用基础 DynamoDB 数据源。以下跟踪视图显示对 DynamoDB 的调用以及查询执行的各个部分的延迟:

  • 在上图中,/getPost 表示指向正在解析的元素的完整路径。在这种情况下,由于 getPost 是根 Query 类型上的字段,因此它直接显示在路径的根目录之后。

  • requestMappingTemplateEvaluation 表示 AWS AppSync 在查询中评估此元素的请求映射模板所花的时间。

  • Query.getPost 表示类型和字段(采用 Type.field 格式)。它可以包含多个子段,具体取决于 API 的结构和被跟踪的请求。

    • DynamoDB 表示附加到此解析器的数据源。它包含对 DynamoDB 进行网络调用以解析字段的延迟。

    • responseMappingTemplateEvaluation 表示 AWS AppSync 在查询中评估此元素的响应映射模板所花的时间。

在 X-Ray 中查看跟踪时,可以通过选择子段并浏览详细视图来获取有关 AWS AppSync 段中各子段的其他上下文和元数据信息。

对于某些深度嵌套或复杂的查询,请注意,由 AWS AppSync 传递给 X-Ray 的段可能大于段文档所允许的最大大小,如 AWS X-Ray 段文档中所定义。X-Ray 不会显示超出限制的段。