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

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

通过 X-Ray API 使用采样规则

这些区域有:Amazon X-Ray开发工具包使用 X-Ray API 获取采样规则、报告采样结果并获取配额。您可以使用这些 API 来更好地了解采样规则的工作方式或采用 X-Ray API 不支持的语言进行采样。

首先利用 GetSamplingRules 获取所有采样规则。

$ aws xray get-sampling-rules { "SamplingRuleRecords": [ { "SamplingRule": { "RuleName": "Default", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/Default", "ResourceARN": "*", "Priority": 10000, "FixedRate": 0.01, "ReservoirSize": 0, "ServiceName": "*", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "Version": 1, "Attributes": {} }, "CreatedAt": 0.0, "ModifiedAt": 1530558121.0 }, { "SamplingRule": { "RuleName": "base-scorekeep", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/base-scorekeep", "ResourceARN": "*", "Priority": 9000, "FixedRate": 0.1, "ReservoirSize": 2, "ServiceName": "Scorekeep", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "Version": 1, "Attributes": {} }, "CreatedAt": 1530573954.0, "ModifiedAt": 1530920505.0 }, { "SamplingRule": { "RuleName": "polling-scorekeep", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/polling-scorekeep", "ResourceARN": "*", "Priority": 5000, "FixedRate": 0.003, "ReservoirSize": 0, "ServiceName": "Scorekeep", "ServiceType": "*", "Host": "*", "HTTPMethod": "GET", "URLPath": "/api/state/*", "Version": 1, "Attributes": {} }, "CreatedAt": 1530918163.0, "ModifiedAt": 1530918163.0 } ] }

输出包括默认规则和自定义规则。请参阅采样规则(如果您尚未创建采样规则)。

按优先级升序评估传入请求的规则。当规则匹配时,使用固定速率和储油层大小做出取样决定。记录抽样请求并忽略(用于跟踪目的)未采样请求。在做出取样决策时停止评估规则。

规则储层大小是应用固定速率之前每秒记录的痕迹的目标数量。水库累积适用于所有服务,因此您无法直接使用它。但是,如果它是非零值,您可以每秒从容器借用一个跟踪,直到 X-Ray API 分配配配额。在接收配额之前,每秒记录第一个请求,并将固定费率应用于其他请求。固定汇率是 0 到 1.00 之间的小数点(100%)。

以下示例显示了对 GetSamplingTargets 的调用以及有关在过去 10 秒内所做的采样决定的详细信息。

$ aws xray get-sampling-targets --sampling-statistics-documents '[ { "RuleName": "base-scorekeep", "ClientID": "ABCDEF1234567890ABCDEF10", "Timestamp": "2018-07-07T00:20:06", "RequestCount": 110, "SampledCount": 20, "BorrowCount": 10 }, { "RuleName": "polling-scorekeep", "ClientID": "ABCDEF1234567890ABCDEF10", "Timestamp": "2018-07-07T00:20:06", "RequestCount": 10500, "SampledCount": 31, "BorrowCount": 0 } ]' { "SamplingTargetDocuments": [ { "RuleName": "base-scorekeep", "FixedRate": 0.1, "ReservoirQuota": 2, "ReservoirQuotaTTL": 1530923107.0, "Interval": 10 }, { "RuleName": "polling-scorekeep", "FixedRate": 0.003, "ReservoirQuota": 0, "ReservoirQuotaTTL": 1530923107.0, "Interval": 10 } ], "LastRuleModification": 1530920505.0, "UnprocessedStatistics": [] }

来自 X-Ray API 的响应包含要使用的配额(而不是从容器借用)。在此示例中,该服务在 10 秒钟内从储层借用了 10 条痕迹,并对其他 100 条请求应用了 10% 的固定速率,从而总共产生了 20 条采样请求。该配额适用于 5 分钟时间(由生存时间表示)或持续到分配新配额。X-Ray API 也可分配一个长于默认值的报告时间间隔(但它在此处没有分配)。

注意

来自 X-Ray API 的响应可能不包含您首次调用它时的配额。继续从水库借款,直到你被分配配额。

响应中的其他两个字段可能指示输入问题。请针对上一次 GetSamplingRules 调用检查 LastRuleModification。如果它是新的,请获得一个新的规则副本。UnprocessedStatistics可能包含以下错误:指示规则已被删除、输入中的统计文档过旧或权限错误。