【问题标题】:Same spanId of parent and child span in OpenTelemetry (Java)OpenTelemetry(Java)中父子跨度的相同跨度ID
【发布时间】:2020-03-03 06:29:55
【问题描述】:
我正在学习 OpenTelemetry (Java)。我创建了一个控制器。在控制器方法中,我创建了一个跨度。然后从中调用服务类的方法。我在服务方法中创建了另一个跨度。在控制台上打印两个 span 的上下文时,两个 span 的 traceId 相同(应该相同)但它们的 spanId 也相同。这是默认行为还是我做错了什么。
【问题讨论】:
标签:
telemetry
opentracing
distributed-tracing
【解决方案1】:
默认情况下,父跨度和子跨度将具有相同的 traceId 和 spanId。在您的“pom.xml”中添加任何出口商依赖项,例如JaegerExporter 或 LoggerExporter 然后它将正常工作,即两个跨度的 traceId 将相同但 spanIds 将是唯一的。发生这种情况是因为默认情况下 TraceFlags{sampled = false} 的跨度,但添加任何导出器的依赖项会使 TraceFlags{sampled = true}。