我正在尝试将 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 的帮助或见解将不胜感激!
我的理解是
AWSXRay.express
中间件是专门针对express
包的。它没有正式用于支持节点Express Gateway
。
否则,您是否正在运行 X-Ray 守护进程(需要将分段发送到 X-Ray)。