【问题标题】:AWS Xray manual mode setting segmentAWS Xray 手动模式设置段
【发布时间】:2017-07-15 14:03:18
【问题描述】:

我正在尝试在没有快速中间件的情况下将一些数据跟踪到 AWS Xray。我的代码如下:

const AWSXRay = require('aws-xray-sdk'),
      AWS = AWSXRay.captureAWS(require('aws-sdk')),
      sqs = AWSXRay.captureAWSClient(new AWS.SQS({apiVersion: '2012-11-05', region: 'eu-west-1'}));

AWSXRay.enableManualMode();
var segment = new AWSXRay.Segment('sqsSegment');

var params = {
  QueueUrl: "https://sqs.eu-west-1.amazonaws.com/123/queuename",
  VisibilityTimeout: 0,
  WaitTimeSeconds: 0,
  XraySegment: segment
};

sqs.receiveMessage(params, function(err, data) {
  if (err) console.log(err, err.stack);
  else     console.log(data);
});

segment.close();

我收到错误消息:Error: No sub/segment specified. A sub/segment must be provided for manual mode.

我正在创建一个段并通过参数将其传递给receiveMessage。但它似乎不起作用。有什么想法吗?

【问题讨论】:

    标签: node.js amazon-web-services aws-xray


    【解决方案1】:

    您需要进行全局级别的捕获 (captureAWS) 或客户端级别的捕获 (captureAWSClient),而不是两者兼而有之。使用“captureAWS”,创建的所有客户端都将自动修补,因此当您在已修补的客户端上执行另一个“captureAWSClient”时,捕获功能会运行两次并且无法正确解析上下文。

    删除其中一个捕获,它应该可以工作。 我会看看是否可以添加修复程序来防止这种情况发生。

    希望这会有所帮助, 桑德拉

    【讨论】:

    • 这样做确实解决了问题。但是,上面的代码直接来自 xray/nodejs 文档上的示例。
    • 你能附上页面的链接吗?我会尽快改正的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2019-05-23
    • 2023-04-07
    • 2017-09-19
    • 2015-11-27
    • 1970-01-01
    • 2019-10-01
    相关资源
    最近更新 更多