每次 Spring Boot 服务器收到请求以及每次调用 Resttemplate 时,Micrometer 是否应该生成一个新的 Span?

问题描述 投票:0回答:1

在 Spring Boot 3.1 项目上工作并使用 B3_MULTI 传播策略,我观察到以下行为:

  • 收到的每个请求时,Micrometer 都会创建一个新的 Span,并且写入的每个日志都包含新的 SpanID。这里不应该记录请求 SpanID 吗?
  • 在服务器使用 RestTemplate 向另一个 API 发送每个请求时,Micrometer 都会创建一个新的 Span,并在标头 X-B3-spanID 中使用创建的 Span 的 ID。在我看来,这种行为看起来很合乎逻辑。

让我担心的是,如果服务器一收到请求就记录新的SpanID,那么在这个请求中获取SpanId的目的是什么?

使用此 application.yml 配置的示例:

management:
  tracing:
    propagation:
      type: B3_MULTI

并使用 postman 调用我的 Spring Boot 3.1 API 并使用这些标头:

X-B3-SpanId:97552541f44c6a8e X-B3-TraceId:affca7de79bdf483

我的应用程序日志包含:

... affca7de79bdf483 | 5631f587ff130771 ...

其中 5631f587ff130771 是一个新的 SpanID

spring-boot spring-cloud-sleuth zipkin micrometer-tracing
1个回答
0
投票

为每个http请求创建一个新的span是正常/默认行为,因为处理http请求是您通常想要观察的单独操作。请检查 Brave 的关节跨度 功能并启用它(如果您需要的话):Boot#35165docs

management.tracing.brave.span-joining-supported=true
© www.soinside.com 2019 - 2024. All rights reserved.