OpenCensus 未在 Stack Driver 中的 Google App Engine 上显示跟踪

Posted

技术标签:

【中文标题】OpenCensus 未在 Stack Driver 中的 Google App Engine 上显示跟踪【英文标题】:OpenCensus Not Showing Traces On Google App Engine in Stack Driver 【发布时间】: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 控制台中看到您的自定义跟踪。 现在应该可以了。请参阅此处的示例***.com/questions/56278381/… 现在应该可以了。请参阅示例here。 【参考方案1】:

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

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

【讨论】:

您找到解决方案了吗?我也试图让自定义跨度出现在 GAE 标准(Java)上,但没有运气。使用 OpenCensus 0.12.2 版(按照 Google Java 设置页面上的建议)。 我没有找到解决方案,我回到了弃用的 GAE 日志记录 感谢您的回复。有人提到添加手动刷新到 Stackdriver Trace 的功能。有没有发生过(在任何地方都找不到)?

以上是关于OpenCensus 未在 Stack Driver 中的 Google App Engine 上显示跟踪的主要内容,如果未能解决你的问题,请参考以下文章

自更新以来,多边形未在小叶r图中绘制

Zipkin (Opencensus) - 2 个名称相同而不是不同的 Span

Stackdriver 上未显示自定义 OpenCensus 指标

如何使用 OpenCensus 检测 Prometheus Gauge?

opencensus 出口商 - 一个全局或每个线程?

使用 OpenCensus 将 Django 日志导出到 Azure AppInsights