代码之家  ›  专栏  ›  技术社区  ›  hendry

X射线仪器的成本?

  •  0
  • hendry  · 技术社区  · 2 年前

    我已经开始使用AWS Synthetics 金丝雀 活动跟踪 选项,如果我错了就纠正我,没有它就没有多大用处 nodejs代码插入 就像我在调用AWS SDK一样:

    const AWSXRay = require('aws-xray-sdk');
    const awsSdk = AWSXRay.captureAWS(require('aws-sdk'));
    

    并且至少跟踪下游中的错误:

    const AWSXRay = require('aws-xray-sdk');
    AWSXRay.captureHTTPsGlobal(require('https'));
    

    已到位。

    我担心的是,添加X射线会增加功能的复杂性。除非该仪器在不使用时以某种方式关闭?

    0 回复  |  直到 2 年前
        1
  •  3
  •   Ermiya Eskandary    2 年前

    const awsSdk = AWSXRay.captureAWS(require('aws-sdk')); 启用的检测 全部的 AWS SDK客户端,这实际上不应该影响任何功能的复杂性。

    如果您决定启用检测,则可能会增加“复杂性” 每个客户端 (请注意,您只能使用其中一个):

    const AWSXRay = require('aws-xray-sdk');
    ...
    var ddb = AWSXRay.captureAWSClient(new AWS.DynamoDB());
    

    Lambda函数上启用的活动跟踪只允许一件事- tracing of requests that don't have a tracing header .如果您在调用您的功能的服务中启用了X射线跟踪,例如API网关或通过插入指令的EC2实例调用Lambda,那么您需要 需要主动跟踪。进行跟踪的服务将根据您的设置对传入请求进行采样&然后在需要的地方添加跟踪头。追踪AWS SDK调用只会提供更多 粒度 在服务地图中。


    然而,为了回答您的问题,AWS X-Ray SDK有两种模式:手动和自动。

    默认情况下,它处于自动模式(例如,在Lambda函数中),但是 可以 在X-Ray SDK上切换手动模式,就像这样。

    var AWSXRay = require('aws-xray-sdk');
    ...
    AWSXRay.enableManualMode();
    

    但是,这将要求您传递段引用,如图所示 here .

    例如,到 capture function calls ,这是一个示例:

    import { S3, PutObjectCommand } from '@aws-sdk/client-s3';
    
    var AWSXRay = require('aws-xray-sdk');
    const s3 = AWSXRay.captureAWSv3Client(new S3({}), subsegment);
    
    await s3.send(new PutObjectCommand({
      Bucket: bucketName,
      Key: keyName,
      Body: 'Hello!',
    }));
    

    然后 在我看来变得非常复杂,我只建议打开它 每个客户端 与相反 “每个函数” 如果你担心数据太多。

    推荐文章