【问题标题】:OpenCensus Not Showing Traces On Google App Engine in Stack DriverOpenCensus 未在 Stack Driver 中的 Google App Engine 上显示跟踪
【发布时间】:2019-02-01 15:44:35
【问题描述】:

我正在使用 Google Cloud 推荐的 OpenCensus 来运行 StackDriver Trace (https://cloud.google.com/trace/docs/setup/java)。我的配置在 Google App Engine Standard Java 8 上运行。我确保在项目中启用了 API,使用了初始化代码并创建了我试图跟踪的 span。

我只是用

创建跨度
Span span = tracer.spanBuilder(spanName).startSpan();

然后用

结束
span.end();

看起来很简单,但在 Google Cloud Trace 控制台中看不到我的自定义跟踪,只有 Google 跟踪的默认 RPC 调用。然后我尝试使用 Scopes 而不是 Span,使用和不使用项目名称来初始化 StackdriverTraceExporter,但没有任何结果导致创建自定义跟踪。

如果我是第一次使用 OpenCensus,我们将不胜感激任何关于在哪里查看的指导或建议。

【问题讨论】:

  • 我也尝试使用 opencensus-exporter-trace-logging 依赖项而不是 Stack Driver,但这没有在日志中显示跨度。我不确定在初始化 OpenCensus 框架、获取 Tracer、以名称开始跨度,然后结束跨度时可能会丢失什么。
  • 也许,文档中缺少它。但是,建议您从哪个文档中调用“span.end();” ?我在documentation 中没有看到。如果您只是按照文档进行操作,让我们看看您是否可以在 Google Cloud Trace 控制台中看到您的自定义跟踪。
  • 现在应该可以了。请参阅此处的示例stackoverflow.com/questions/56278381/…
  • 现在应该可以了。请参阅示例here

标签: stackdriver google-cloud-stackdriver google-cloud-sdk google-cloud-trace opencensus


【解决方案1】:

我发现 OpenCensus 在刷新缓存以写入导出器位置之前有 5 秒的延迟。这意味着要让跟踪显示出来,您必须使线程保持活动状态至少 5 秒。我遇到的问题是在多线程环境中,线程死得太快了。

OpenCensus 提出了一个允许您以编程方式刷新缓存的机会,这将允许开发人员在返回响应之前刷新缓存,从而确保可靠地写出跨度数据。

【讨论】:

  • 您找到解决方案了吗?我也试图让自定义跨度出现在 GAE 标准(Java)上,但没有运气。使用 OpenCensus 0.12.2 版(按照 Google Java 设置页面上的建议)。
  • 我没有找到解决方案,我回到了弃用的 GAE 日志记录
  • 感谢您的回复。有人提到添加手动刷新到 Stackdriver Trace 的功能。有没有发生过(在任何地方都找不到)?
猜你喜欢
  • 2011-08-07
  • 2013-01-10
  • 1970-01-01
  • 2011-06-16
  • 2019-09-23
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多