Google Cloud trace 自定义 trace 只工作了几次
Google Cloud trace Custom trace only works a few times
我已经使用 nodejs 和 express 激活了 Google Cloud Tracer,在自动模式下运行良好,正确注册了对 api 的调用。
我尝试手动创建跟踪,以了解中间步骤的执行时间。
controller (req, res) {
tracer.runInRootSpan({ name: 'dnd-task' }, (rootSpan) => {
//promise
myPromise(rootSpan)
.then((data) => {
rootSpan.endSpan()
res.ok(data)
})
.catch((err)=>{
rootSpan.endSpan()
res.send(err)
})
})
}
但 Google Cloud Trace 仅列出 1 或 2 个调用,而自动生成的调用显示数千个 API 调用。
我也看了文档试图获取express.js中间件的上下文,但是没找到获取上下文的方法
a root span is automatically started whenever an incoming request is received (in other words, all middleware already runs within a root span).
根据@kjin 评论更新:
在 express 的控制器中你只需要
tracer.createChildSpan({name: 'name'})
如果您启用了自动跟踪并且还使用自定义跨度API在请求侦听器中生成根跨度,那么根跨度将被忽略,因为它是在预先存在的根跨度(为该请求自动启动的跨度)中创建。这是我根据此处提供的代码做出的猜测,但您应该能够通过创建子跨度来完成您想要的。 (自定义根跨度适用于发生在请求生命周期之外的工作——例如定期工作。)
回复:Express.js 中间件上下文——我不太确定你在这里的意思,但跟踪代理不会在跟踪上下文中存储任何请求侦听器参数。
作为附加说明 -- 如果您直接向链接到的 GitHub 存储库报告问题,您将获得更快的响应时间。
希望对您有所帮助!
我已经使用 nodejs 和 express 激活了 Google Cloud Tracer,在自动模式下运行良好,正确注册了对 api 的调用。
我尝试手动创建跟踪,以了解中间步骤的执行时间。
controller (req, res) {
tracer.runInRootSpan({ name: 'dnd-task' }, (rootSpan) => {
//promise
myPromise(rootSpan)
.then((data) => {
rootSpan.endSpan()
res.ok(data)
})
.catch((err)=>{
rootSpan.endSpan()
res.send(err)
})
})
}
但 Google Cloud Trace 仅列出 1 或 2 个调用,而自动生成的调用显示数千个 API 调用。
我也看了文档试图获取express.js中间件的上下文,但是没找到获取上下文的方法
a root span is automatically started whenever an incoming request is received (in other words, all middleware already runs within a root span).
根据@kjin 评论更新:
在 express 的控制器中你只需要
tracer.createChildSpan({name: 'name'})
如果您启用了自动跟踪并且还使用自定义跨度API在请求侦听器中生成根跨度,那么根跨度将被忽略,因为它是在预先存在的根跨度(为该请求自动启动的跨度)中创建。这是我根据此处提供的代码做出的猜测,但您应该能够通过创建子跨度来完成您想要的。 (自定义根跨度适用于发生在请求生命周期之外的工作——例如定期工作。)
回复:Express.js 中间件上下文——我不太确定你在这里的意思,但跟踪代理不会在跟踪上下文中存储任何请求侦听器参数。
作为附加说明 -- 如果您直接向链接到的 GitHub 存储库报告问题,您将获得更快的响应时间。
希望对您有所帮助!