本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过 X-Ray API 使用采样规则
这些区域有:Amazon X-Ray开发工具包使用 X-Ray API 获取采样规则、报告采样结果并获取配额。您可以使用这些 API 来更好地了解采样规则的工作方式或采用 X-Ray 开发工具包不支持的语言进行采样。
首先利用 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 分配配额。在收到配额之前,每秒记录第一个请求,然后将固定费率应用于其他请求。固定利率为 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 的响应包含要使用的配额(而不是从容器借用)。在此示例中,该服务在 10 秒内从储存库中借用了 10 条跟踪信息,并对其他 100 个请求应用了 10% 的固定费率,导致总共 20 个采样请求。该配额适用于 5 分钟时间(由生存时间表示)或持续到分配新配额。X-Ray 也可分配一个长于默认值的报告时间间隔(但它在此处没有分配)。
来自的响 X-Ray 可能不包含您首次调用它时的配额。继续从水库借款,直到您获得配额。
响应中的另外两个字段可能表示输入存在问题。请针对上一次 GetSamplingRules
调用检查 LastRuleModification
。如果更新,请获取规则的新副本。UnprocessedStatistics
可能包括指示规则已被删除、输入中的统计文档太旧或权限错误的错误。