node.js - aws xray 采样不适用于 http 状态代码
问题描述
我们如何根据 http 状态码对 aws xray 中的数据进行采样,例如,我将采样 40% 的状态码为 200 的记录和 100% 的状态码为 500 的记录。下面是示例 json,但我无法采样数据
const rules = {
"rules": [{
"description": "get users",
"service_name": "*",
"http_method": "GET",
"url_path": "*",
"fixed_target": 0,
"rate": 0.25
"attributes": {
"status": 200
}
}],
"default": { "fixed_target": 1, "rate": 0.1},
"version": 1
};
解决方案
X-Ray SDK 目前不支持您需要的功能。
AWS 在文档 [1] 中提到了这一点:
(可选)属性(键和值)——在做出抽样决定时已知的分段属性。
X-Ray SDK –不支持。SDK 会忽略指定属性的规则。
Amazon API Gateway – 来自原始 HTTP 请求的标头。
在查看适用于 Node.js 的 AWS X-Ray 开发工具包中的采样规则的源代码时,您还可以看到它不受支持。[2]
我认为您只能从 AWS 管理控制台(而不是开发工具包)指定Attributes属性,并且只能为 Amazon API Gateway 指定。
解决方案
- 将样本计数增加到 100%(不推荐,因为它有效地破坏了采样的目的——尽管对于一小部分 HTTP 端点可能是可行的)。
- 使用 API 网关(可能成本高昂)。
- 如果您在支持计划中,请在 GitHub 上使用功能请求 (FR) 打开一个问题并写信给 AWS 支持以提交 FR(根据我对 AWS X-Ray 开发速度的经验,这不是很有希望)。
参考
[1] https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html#xray-console-sampling-options
[2] https://github.com/aws/aws -xray-sdk-node/blob/6bade5ad006a47f19a5352a40f1ad2823f404e63/packages/core/lib/middleware/sampling/sampling_rule.js
推荐阅读
- node.js - 如何使用 multer 将文件数组保存到 mongoDB 数据库?
- python - 仅在满足特定条件后如何从函数返回
- django - 如何限制 Django 模型使用某些外键值?
- c# - 插页式广告 - 时间过后且仅在游戏结束时出现?
- css - 带有 flex-grow 1 的可滚动 flex 子节点
- reactjs - 使用 React 路由器查询参数
- javascript - javaScript中的未知查询语句
- swift - 为什么字典的for-in循环不是顺序的
- google-app-engine - 当我在应用程序中记录错误时,AppEngine 可以自动向我发送电子邮件吗?
- python - 如何获得 0 作为我的斐波那契序列的第一项?