Node.js Google Cloud trace自定义跟踪只工作几次

Node.js Google Cloud trace自定义跟踪只工作几次,node.js,express,google-cloud-platform,google-cloud-stackdriver,google-cloud-trace,Node.js,Express,Google Cloud Platform,Google Cloud Stackdriver,Google Cloud Trace,我用nodejs&express激活了googlecloudtracer,在自动模式下运行良好,正确注册了对api的调用 我尝试手动创建跟踪,以了解中间步骤的执行时间 controller (req, res) { tracer.runInRootSpan({ name: 'dnd-task' }, (rootSpan) => { //promise myPromise(rootSpan) .then((data) => {

我用nodejs&express激活了googlecloudtracer,在自动模式下运行良好,正确注册了对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中间件的上下文,但没有找到获取上下文的方法

发件人:

只要接收到传入请求,就会自动启动根范围(换句话说,所有中间件都已在根范围内运行)

更新基于@comment:

在express中的控制器内,您只需要


tracer.createChildSpan({name:'name'})

如果启用了自动跟踪,并且使用自定义span API在请求侦听器中生成根跨距,则将忽略根跨距,因为它是在预先存在的根跨距(为该请求自动启动的根跨距)内创建的。这是我根据这里给出的代码所做的猜测,但是您应该能够通过创建子跨度来实现您想要的。(自定义根范围用于请求生命周期之外的工作,如周期性工作。)

Re:Express.js中间件上下文——我不太清楚您在这里的意思,但是跟踪代理没有在跟踪上下文中存储任何请求侦听器参数

另外,如果您直接向链接到的GitHub存储库报告问题,您将获得更快的响应时间


希望这有帮助

非常感谢您的回复。我仍然有一点怀疑,如果我没有“rootSpan”请求对象,我如何才能为该跟踪添加标签?@Cristyan(和未来的读者)--很抱歉响应太晚,我不经常检查