1

我需要为我们的应用程序连接监控和跟踪工具。我们的主要代码在运行在 Google Cloud Functions 上的 Express 4 上。从处理域和漂亮路由名称的前端 nginx 代理服务器传入的所有请求。不幸的是,跟踪代理会跟踪这个请求,这些请求在没有任何附加信息的情况下通过 nginx 前端代理进行,这不足以收集有关应用程序的有用信息。我找到了 Stack Driver 自定义 API,据我所知,它可能有助于在运行时收集适当的数据,但我不明白如何将它连接到 Google Cloud Functions 应用程序。所有其他示例都说,我们必须扩展我们的启动脚本,但是 Google Cloud Functions 完全自动化的东西,这里没有这种可能性。

4

2 回答 2

1

找到解决方案。我require("@google-cloud/trace-agent");不包括在index.js的顶部。它应该包含所有其他模块之前。之后它开始工作。

于 2017-06-15T11:42:28.867 回答
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
);
于 2017-06-26T14:41:16.553 回答