OpenTelemetry 中父跨度和子跨度的相同 spanId (Java)

Same spanId of parent and child span in OpenTelemetry (Java)

我正在研究 OpenTelemetry (Java)。我创建了一个控制器。在控制器方法中,我创建了一个跨度。然后从中调用一个服务方法class。我在服务方法中创建了另一个跨度。在控制台上打印两个跨度的上下文时,两个跨度的 traceId 相同(应该相同)但它们的 spanId 也相同。这是默认行为还是我做错了什么。

默认情况下,父跨度和子跨度将具有相同的 traceId 和 spanId。在您的 "pom.xml" 中添加任何出口商依赖项,例如JaegerExporter or LoggerExporter 然后它将正常工作,即两个跨度的 traceId 将相同但 spanIds 将是唯一的。发生这种情况是因为默认情况下 TraceFlags{sampled = false} of span 但添加任何导出器的依赖项都会使 TraceFlags{sampled = true}。