配置 采样规则 - Amazon X-Ray
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

配置 采样规则

您可以使用 Amazon X-Ray 控制台为您的服务配置采样规则。支持使用采样配置进行主动跟踪的 X-Ray SDK 和Amazon服务使用采样规则来确定要记录哪些请求。

配置 采样规则

您可以为以下使用案例配置采样:

  • API Gateway 入口点 — API Gateway 支持采样和主动跟踪。要在 API 阶段启用主动跟踪,请参阅Amazon API Gateway 主动跟踪支持Amazon X-Ray

  • Amazon AppSync—Amazon AppSync 支持采样和主动跟踪。要启用对Amazon AppSync请求的主动跟踪,请参阅使用Amazon X-Ray 进行跟踪

  • 计算平台上的 Instrument X-Ray SDK — 使用 Amazon EC2、Amazon ECS 等计算平台时,如果应用程序已使用最新 X-Ray SDK 进行仪器,则支持采样。Amazon Elastic Beanstalk

自定义抽样规则

通过自定义采样规则,可以控制您记录的数据量。您也可以在不修改或重新部署代码的情况下修改采样行为。采样规则告知 X-Ray SDK 需要记录一组标准的请求数量。默认情况下,X-Ray SDK 每秒记录第一次请求,以及任何其他请求的百分之五。每秒一个请求是容器。这可确保只要服务正在处理请求,就会每秒至少记录一个跟踪。5% 是对超出容器尺寸的额外请求进行采样的比率

您可以将 X-Ray SDK 配置为从代码中包含的 JSON 文档中读取采样规则。但是,当您运行服务的多个实例时,每个实例都会单独执行采样。这会导致采样的请求的总体比例升高,因为所有实例的容器都会被有效地一起添加。此外,要更新本地采样规则,必须重新部署代码。

通过在 X-Ray 控制台中定义采样规则,并将 SDK 配置为从 X-Ray 服务读取规则,可以避免这两个问题。该服务将管理每条规则的容器,并向您的服务的每个实例分配配额以基于正在运行的实例数均匀地分配容器。容器限制是根据您设置的规则计算的。由于规则是在服务中配置的,因此无需进行额外部署即可管理规则。

注意

X-Ray 在应用采样规则时使用尽最大努力的方法,在某些情况下,有效采样率可能与配置的采样规则不完全匹配。但是,随着时间的推移,抽样的请求数量应接近配置的百分比。

现在,您可以在 Amazon CloudWatch 控制台中配置 X-Ray 采样规则。您也可以继续使用 X-Ray 控制台。

X-Ray console
在 X-Ray 控制台中配置采样规则
  1. 打开 X-Ray 控制台

  2. 选择左侧导航窗格中的 Sample(采样)。

  3. 要创建规则,请选择 Create sampling rule (创建采样规则)

    要编辑规则,请选择规则的名称。

    要删除规则,请选择一条规则并使用 Actions (操作) 菜单来删除它。

CloudWatch console
在 CloudWatch 控制台中配置采样规则
  1. 登录Amazon Web Services Management Console并打开 CloudWatch 主机,网址为 https://console.aws.amazon.com/cloudwatch/

  2. 选择左侧导航窗格中的 Settings(设置)。

  3. X-Ray 追踪部分的采样规则下选择查看设置

  4. 要创建规则,请选择 Create sampling rule (创建采样规则)

    要编辑规则,请选择规则并选择 “编辑” 对其进行编辑。

    要删除规则,请选择规则并选择删除将其删除。

采样规则选项

以下选项可用于每条规则。字符串值可以使用通配符来匹配单个字符 (?) 或零或多个字符 (*)。

采样规则选项
  • 规则名称(字符串)— 一个唯一的规则名称。

  • 优先级(1 和 9999 之间的整数)— 采样规则的优先级。服务按优先级的上升顺序评估规则,并与匹配的第一条规则进行抽样决策。

  • 器(非负整数)— 在应用固定速率之前,每秒要分析的匹配请求的固定数量。该容器不由服务直接使用,但适用于所有使用该规则的服务。

  • 速率(0 到 100 之间的整数)— 容器耗尽后,要分析的匹配请求的百分比。在控制台中配置采样规则时,选择 0 到 100 之间的百分比。使用 JSON 文档在客户端 SDK 中配置采样规则时,请提供介于 0 到 1 之间的百分比值。

  • 服务名称(字符串)-仪器化服务的名称,显示在服务映射中。

    • X-Ray SDK — 您在录制器上配置的服务名称。

    • Amazon API Gateapi-name/stage way

  • 服务类型(字符串)-服务类型,显示在服务地图中。对于 X-Ray SDK,通过应用相应的插件来设置服务类型:

    • AWS::ElasticBeanstalk::Environment—Amazon Elastic Beanstalk 环境(插件)。

    • AWS::EC2::Instance— Amazon EC2 实例(插件)。

    • AWS::ECS::Container— 亚马逊 ECS 容器(插件)。

    • AWS::APIGateway::Stage— Amazon API Gateway 阶段。

    • AWS::AppSync::GraphQLAPI — 一个Amazon AppSync API 请求。

  • 主机(字符串)— HTTP 主机标头中的主机名。

  • HTTP 方法(字符串)— HTTP 请求的方法。

  • URL 路径(字符串)— 请求的 URL 路径。

    • X-Ray SDK — HTTP 请求网址的路径部分。

  • 资源 ARN(字符串)-运行服务的Amazon资源的 ARN。

    • X-Ray SDK — 不支持。SDK 只能使用资源 ARN 设置为的规则*

    • Amazon API Gateway — 阶段 ARN。

  • (可选)属性(键和值)-在做出抽样决策时已知的区段属性。

    • X-Ray SDK — 不支持。该开发工具包将忽略指定属性的规则。

    • Amazon API Gateway — 来自原始 HTTP 请求的标头。

采样规则示例

例 — 没有水库且费率低的默认规则

您可以修改默认规则的容器和比率。默认规则应用于与任何其他规则都不匹配的请求。

  • 水库0

  • 速率50.05如果使用 JSON 文档配置)

例 — 调试规则,用于跟踪对有问题路由的所有请求

一个临时应用的用于调试的高优先级规则。

  • 规则名称DEBUG – history updates

  • 优先级1

  • 水库1

  • 速率1001如果使用 JSON 文档配置)

  • 服务名称Scorekeep

  • Service type (服务类型)*

  • 主持人*

  • HTTP 方法PUT

  • 网址路径/history/*

  • 资源 ARN*

例 — 更高的最低POST费率
  • 规则名称POST minimum

  • 优先级100

  • 水库10

  • 速率10.1如果使用 JSON 文档配置)

  • 服务名称*

  • Service type (服务类型)*

  • 主持人*

  • HTTP 方法POST

  • 网址路径*

  • 资源 ARN*

将服务配置为使用采样规则

X-Ray SDK 需要额外配置才能使用您在控制台中配置的采样规则。有关更多信息,请参阅采用您的语言的配置主题中有关配置采样策略的详细信息:

有关 API Gateway 的信息,请参阅Amazon API Gateway 主动跟踪支持Amazon X-Ray

查看采样结果

X-Ray 控制台采样页面显示有关您的服务如何使用每条采样规则的详细信息。

Trend (趋势) 列显示了在前几分钟如何使用了规则。每个列显示了 10 秒时段的统计数据。

采样统计数据
  • 匹配规则总数:匹配此规则的请求数。此数字不包含可能与此规则匹配但先与优先级更高的规则匹配的请求。

  • 抽样总数:记录的请求数。

  • 使用固定费率进行抽样:通过应用规则的固定费率抽样的请求数。

  • 使用@@ 储存库限制进行采样:使用 X-Ray 分配的配额抽样的请求数。

  • 从储存库借款:通过从储存库借款而抽取的请求数。服务首次将请求与规则匹配时,X-Ray 尚未为其分配配额。但是,如果存储库至少为 1,则服务每秒借用一条轨迹,直到 X-Ray 分配配额。

有关采样统计数据以及服务采样规则的方式的更多信息,请参阅通过 X-Ray API 使用采样规则

后续步骤

您可以使用 X-Ray API 管理采样规则。利用 API,您可以按计划以编程方式创建和更新规则,也可以作为对警报或通知的响应执行此操作。有关说明和其他规则示例,请参阅使用配置采样、组和加密设置Amazon X-RayAPI

X-Ray SDK 和Amazon服务还使用 X-Ray API 读取采样规则、报告采样结果和获取采样目标。服务必须跟踪应用每条规则的频率,根据优先级评估规则,并在请求与 X-Ray 尚未为该服务分配配额的规则匹配时向资源库借用。有关服务如何使用 API 进行采样的更多详细信息,请参阅通过 X-Ray API 使用采样规则

当 X-Ray SDK 调用采样 API 时,它使用 X-Ray 守护程序作为代理。如果您已使用 TCP 端口 2000,则可以配置守护程序以在其他端口上运行代理。有关详细信息,请参阅配置Amazon X-Ray守护进程