0

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

4

1 回答 1

0

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

于 2020-03-14T15:42:12.790 回答