Google Cloud跟踪自定义跟踪仅可使用几次

时间:2018-10-25 12:04:08

标签: node.js express google-cloud-platform google-cloud-stackdriver google-cloud-trace

我已使用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中间件的上下文,但是我没有找到获取上下文的方法。

来自:google-cloud-trace

  

无论何时收到传入请求(即,所有中间件都已在根范围内运行),都会自动启动根范围。

基于@ kjin评论进行更新:

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

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

1 个答案:

答案 0 :(得分:2)

如果您启用了自动跟踪功能,并且使用自定义跨度API在请求侦听器中生成根跨度,则该根跨度将被忽略,因为它是在预先存在的根跨度内创建的(自动针对该请求启动的请求)。这是基于此处提供的代码的猜测,但您应该能够通过创建子跨度来完成所需的操作。 (自定义根范围是指在请求生命周期之外进行的工作,例如定期工作。)

关于:Express.js中间件上下文-我不确定您在这里的意思,但是跟踪代理程序不会在跟踪上下文中存储任何请求侦听器参数。

作为补充说明-如果直接向链接到的GitHub存储库报告问题,您将获得更快的响应时间。

希望这会有所帮助!