【问题标题】:Get the currently active span from implicit context从隐式上下文中获取当前活动范围
【发布时间】:2021-02-04 10:44:24
【问题描述】:

我在opentelemetry/specification/trace/api找到这个:

如果语言支持隐式传播的Context(参见here),API 还应该提供以下功能:

  • 从隐式上下文中获取当前活动范围。这相当于获取隐式上下文,然后从上下文中提取Span
  • 将当前活动范围设置为隐式上下文。这相当于获取隐式上下文,然后将Span 插入到上下文中。

但是我没有找到在java或go中获取当前活动span的方法。是否有任何语言支持此功能?
任何帮助将不胜感激!

【问题讨论】:

    标签: open-telemetry


    【解决方案1】:

    是的,.NET 支持它:global::OpenTelemetry.Trace.Tracer.CurrentSpan。这是可行的,因为在任何给定的执行流程中一次只能有一个“活动”跨度。需要明确的是:可以有多个 span 并发活动,只是不在同一个执行流程中;执行流程可以分叉,但每个分叉一次只有一个活动跨度。

    此外,.NET 在其 Activity API 中已经拥有相当于 OpenTelemetry API 的功能。

    • Tracer 是 ActivitySource 的包装器。
    • TelemetrySpan 是 Activity 的包装器。

    您也可以通过访问Activity.Current.Context获取当前的System.Diagnostics.ActivityContext

    OpenTelemetry API 的 .NET 参考实现建议您直接使用 .NET 框架的内置 Activity API。但是,它还提供了封装 Activity API 的 OpenTelemetry 垫片。

    例如,您可以将OpenTelemetry.Trace.SpanContext 隐式转换为System.Diagnostics.ActivityContext。您可以使用new OpenTelemetry.Trace.SpanContext(activityContext) 将其转换回来。

    我没有看到从 SpanContext 获取 TelemetrySpan 的方法;然而。所以global::OpenTelemetry.Trace.Tracer.CurrentSpan 可能是你最好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-09
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多