我需要为我们的应用程序连接监视和跟踪工具。我们的主要代码是在 Google Cloud Functions 上运行的 Express 4 上的。所有来自处理域和漂亮路由名称的前端nginx代理服务器的请求。不幸的是,跟踪代理跟踪此请求,即在没有任何附加信息的情况下进入nginx前端代理,这不足以收集有关应用程序的有用信息。我找到了堆栈驱动程序自定义API,据我所知,它可能有助于在运行时收集适当的数据,但我不明白如何将其连接到Google Cloud Functions应用程序。所有其他例子都说,我们必须扩展我们的启动脚本,但是Google Cloud Functions完全自动化的东西,这里没有这种可能性。
找到解决方案。我把require("@google-cloud/trace-agent");
不包括在索引的顶部,.js。它应该包含在所有其他模块之前。之后它开始工作。
将 require("@google-cloud/trace-agent"( 作为第一次导入对我不起作用。我仍然不断得到:
ERROR:@google-cloud/trace-agent: express tracing might not work as /var/tmp/worker/node_modules/express/index.js was loaded before the trace agent was initialized.
但是,我设法通过手动修补 express 来解决它:
var traceApi = require('@google-cloud/trace-agent').get();
require("@google-cloud/trace-agent/src/plugins/plugin-express")[0].patch(
require(Object.keys(require('module')._cache).find( _ => _.indexOf("express") !== -1)),
traceApi
);