当前位置: 首页 > 知识库问答 >
问题:

记录X-B3-SpanId或SPANID?X-B3-TraceId还是TraceID?(spring·斯卢特)

鄂慈
2023-03-14

spring的侦探增加了MDC的X-B3-SpanId和SpanID。(TraceId相同)

{X-B3-SpanId=0000000000000001, X-B3-TraceId=0000000000000002, X-Span-Export=false, spanExportable=false, spanId=0000000000000001, traceId=0000000000000002}

“x-b3-”前缀值与非前缀值相同。
如果其中一个值是多余的,我倾向于删除它。(减少日志的冗长)

X-B3-SpanId和SPANID有什么区别吗?(X-B3-TraceId和Traceid)
是否有充分的理由将两者都记录下来?

spring文档https://cloud.spring.io/spring-cloud-sleuth/2.1.x/single/single/-cloud-sleuth.html#_propagation中的图表显示,“x-b3-”前缀的东西只存在于传输的请求头中,但是如果我在没有这些头的情况下发出请求,日志的MDC仍然包含“x-b3-”前缀的值。

使用得依赖项:

  • org.springframework.boot:spring-boot-starter-log4j2:2.0.3.release
  • org.springframework.cloud:spring-cloud-sleuth-core:2.0.3.release

只是简单地添加了对gradle.build的依赖关系-没有关于sleuth的定制/配置。

*MDC=log4j2的映射诊断上下文https://logging.apache.org/log4j/2.x/manual/thread-context.html

共有1个答案

万俟玉书
2023-03-14

查看类Slf4jScopeDecorator可以清楚地看到,这两个值完全相同,它们保持X-B3*前缀值只是为了向后兼容:

 * Adds {@linkplain MDC} properties "traceId", "parentId", "spanId" and "spanExportable"
 * when a {@link brave.Tracer#currentSpan() span is current}. These can be used in log
 * correlation. Supports backward compatibility of MDC entries by adding legacy "X-B3"
 * entries to MDC context "X-B3-TraceId", "X-B3-ParentSpanId", "X-B3-SpanId" and
 * "X-B3-Sampled"

https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/Java/org/springframework/cloud/sleuth/log/slf4jscopedecorator.Java

所以您可以使用这两个变量中的任何一个,但要注意,它们认为X-B3*变量是遗留变量

 类似资料:
  • 我在Node中编写的服务很少使用“X-Request-Id”作为标头来识别请求。我现在使用spring boot在Java中编写服务,我可以使用spring cloud sleuth跟踪traceId和spanId。 然而,我希望在我的所有服务中继续使用“X-Request-Id”作为请求标识符。有没有办法在spring sleuth中重命名“X-B3-TraceId”标头,以便它在HTTP请求中

  • 我正在尝试通过使用spring-cloud d-gcp-starter-log将SpringBootApplication(微服务)与StackdriverLogging集成。我能够在GCP中看到日志,但在日志中traceId和SPANId丢失。为此,我也尝试使用Spring-cloud d-sleuth,但由于我在我的微服务中使用apache kafka,因此侦探无法正常工作。有人能帮我吗我如何

  • 我试图在spring boot应用程序中配置的过滤器中获取请求中的Traceid以进行审计。 我们如何从过滤器中的请求中获取Traceid

  • TraceId 生成规则 SOFATracer 通过 TraceId 来将一个请求在各个服务器上的调用日志串联起来,TraceId 一般由接收请求经过的第一个服务器产生,产生规则是: 服务器 IP + 产生 ID 时候的时间 + 自增序列 + 当前进程号 ,比如: 0ad1348f1403169275002100356696 前 8 位 0ad1348f 即产生 TraceId 的机器的 IP,

  • 例如,在包括Spring Cloud Sleuth之前,人们会在他们的日志中得到这样的东西 在应用程序名称附近有2个逗号(即traceID和spanID将显示的位置)。但我的日志最初看起来像这样 为了在日志中获取应用程序名称,我在application.properties中编写了以下代码 现在,我的日志看起来是这样的(如果您观察到,它在应用程序名称旁边没有2个逗号) 即使包括了Sleuth,我的