如何将 AWS X-Ray 与 Express Gateway 中间件集成?

问题描述 投票:0回答:1

我正在尝试将 AWS X-Ray 与 Express Gateway 应用程序集成,以跟踪传入的 HTTP 请求并监控性能。但是,我在访问内部 Express 实例以正确附加 X-Ray 中间件时遇到问题。

AWS X-Ray SDK 设置:我还通过调用 AWSXRay.captureHTTPsGlobal(require('http')) 尝试了 AWS X-Ray 的常规设置以捕获全局 HTTP 流量,但跟踪没有出现在 AWS X-Ray 中控制台。

我在寻找什么: 将 AWS X-Ray 中间件挂接到 Express Gateway 的内部 Express 应用程序的有效解决方案。 在 Express Gateway 中添加用于跟踪的自定义中间件的任何官方方法或最佳实践。 代码示例(我尝试过的):

const path = require("path");
const gateway = require("express-gateway");
const AWSXRay = require('aws-xray-sdk');
const nconf = require("nconf");
const { loadConfigurations } = require("./aws");

nconf.use('memory').env({ parseValues: true });

(async () => {
    await loadConfigurations();

    // Global capture of HTTP(S) requests with AWS X-Ray
    AWSXRay.captureHTTPsGlobal(require('http'));
    AWSXRay.captureHTTPsGlobal(require('https'));

    const gatewayInstance = gateway().load(path.join(__dirname, "config"));

    gatewayInstance.on('loaded', () => {
        const expressApp = gatewayInstance.app;  // Access the underlying Express app

        // Add AWS X-Ray middleware
        expressApp.use(AWSXRay.express.openSegment('appstore-gateway'));
        expressApp.use(AWSXRay.express.closeSegment());

        console.log('AWS X-Ray middleware applied.');
    });

    gatewayInstance.run();  // Start the Gateway
})();

任何关于将 AWS X-Ray 正确连接到 Express Gateway 的帮助或见解将不胜感激!

node.js express aws-xray express-gateway
1个回答
0
投票

我的理解是

AWSXRay.express
中间件是专门针对
express
包的。它没有正式用于支持节点
Express Gateway

否则,您是否正在运行 X-Ray 守护进程(需要将分段发送到 X-Ray)。

© www.soinside.com 2019 - 2024. All rights reserved.