我需要为我们的应用程序连接监视和跟踪工具。我们的主要代码是运行在Google Cloud Functions上的Express 4。从前nginx代理服务器传入的所有请求都处理域和漂亮的路由名称。不幸的是,跟踪代理跟踪此请求,这些请求来自nginx前端代理,没有任何其他信息,这不足以收集有关应用程序的有用信息。我发现了堆栈驱动程序自定义API,据我所知,它可能有助于在运行时收集适当的数据,但我不知道如何将其连接到Google Cloud Functions应用程序。所有其他的例子都说,我们必须扩展我们的启动脚本,但Google Cloud Functions是完全自动化的东西,这里没有这种可能性。
答案 0 :(得分:1)
找到解决方案。我将require("@google-cloud/trace-agent");
添加到 index.js 的顶部。它应该包括之前所有其他模块。之后它开始起作用了。
答案 1 :(得分:1)
放置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
);