【问题标题】:aws xray not monitoring dynamo dax client in nodejsaws x ray 未在 nodejs 中监控 dynamodb dax 客户端
【发布时间】:2022-05-08 20:40:17
【问题描述】:

我最近开始在我的节点 lambda 函数中使用 dynamodb dax,但是使用“amazon-dax-client”框架,我不能再像这样通过框架发出的 http 请求透明地捕获;

const AWS = AWSXRay.captureAWS(require('aws-sdk'));
const dynamoDB = AWSXRay.captureAWSClient(new AWS.DynamoDB(defaults.db.config));

我知道我可以创建异步捕获。但我想知道是否有更好的方法来做到这一点,就像以前的方式一样,如果我有人设法捕获请求,使用 dax-client 以与使用 aws 框架中的 dynamo 客户端相同的方式进行。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-dynamodb-dax


    【解决方案1】:

    DAX 目前不支持 XRay,因为 DAX 不使用标准 AWS SDK HTTP 客户端(它根本不使用 HTTP)。

    团队收到了其他关于 XRay 支持的请求,因此我们当然正在考虑。

    【讨论】:

    • 感谢您的回答。如果您不介意我问,那么 dax 使用什么协议?我确信 dax 在引擎盖下使用了弹性疼痛。
    • 它是基于常规 TCP 的自定义协议,使用 CBOR 进行数据编码。它旨在最大限度地减少网络上的数据和编码/解码成本。
    • @JeffHardy 嗨,Jeff,这个领域有什么进展吗?
    • @MattRowles 我不再是 DAX 团队的成员,所以我不确定已经完成或计划了什么。
    • 有人知道目前的状态吗?
    【解决方案2】:

    虽然 DAX 团队没有对 XRAY 的官方支持。我写了一个小 sn-p 作为解决方法。

    const db = new Proxy(documentClient, {
        get: (target: any, prop: any) => {
          if (typeof target[prop] === "function") {
            return (...args: any) => {
              const segment = xray
                .getSegment()
                ?.addNewSubsegment(`DynamoDB::${prop}`);
    
              const request = target[prop](...args);
    
              const promise = request
                .promise()
                .then((response: any) => {
                  segment?.close();
                  return response;
                })
                .catch((err: any) => {
                  segment?.close();
                  return Promise.reject(err);
                });
    
              return {
                ...request,
                promise: () => promise,
              };
            };
          }
    
          return target[prop];
        },
      });
    
    const response await = db.query(...).promise();
    

    在 VPC 私有子网和 AWS XRAY 服务端点下的 AWS Lambda 中测试。

    【讨论】:

      猜你喜欢
      • 2019-04-18
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2018-07-24
      相关资源
      最近更新 更多