我已使用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中间件的上下文,但是我没有找到获取上下文的方法。
无论何时收到传入请求(即,所有中间件都已在根范围内运行),都会自动启动根范围。
基于@ kjin评论进行更新:
在Express中的控制器内,您只需要
tracer.createChildSpan({name: 'name'})
答案 0 :(得分:2)
如果您启用了自动跟踪功能,并且还使用自定义跨度API在请求侦听器中生成根跨度,则该根跨度将被忽略,因为它是在预先存在的根跨度内创建的(自动针对该请求启动的请求)。这是基于此处提供的代码的猜测,但您应该能够通过创建子跨度来完成所需的操作。 (自定义根范围是指在请求生命周期之外进行的工作,例如定期工作。)
关于:Express.js中间件上下文-我不确定您在这里的意思,但是跟踪代理程序不会在跟踪上下文中存储任何请求侦听器参数。
作为补充说明-如果直接向链接到的GitHub存储库报告问题,您将获得更快的响应时间。
希望这会有所帮助!