Spring Cloud Sleuth 不同的跟踪 ID 与 Kafka 集成
Spring Cloud Sleuth different trace-ID integrate with Kafka
我使用 Kafka 进行微服务之间的 Asyng 调用,我使用 Spring Sleuth 进行日志记录。 logging 没问题,但是当有消息从 Microservice1 到 Microservice2 时,logging 的消息有不同的 Trace-ID。他们不必具有相同的 trace-Id 但具有不同的 SpanId 吗?有什么特殊配置吗?
消息 headers 默认情况下不会由 Spring Cloud Kafka binder 传输,您必须按照 Spring Cloud Stream Reference Guide 中的描述通过 spring.cloud.stream.kafka.binder.headers
手动设置它。然后检查那些跟踪相关的 headers 是否被正确发送。
您可以在 application.yml 中如下设置 Zipkin headers:
spring:
cloud:
stream:
kafka:
binder:
headers:
- X-B3-TraceId
- X-B3-SpanId
- X-B3-Sampled
- X-B3-ParentSpanId
- X-Span-Name
- X-Span-Export
或者在你的 application.properties:
spring.cloud.stream.kafka.binder.headers[0]=X-B3-TraceId
spring.cloud.stream.kafka.binder.headers[1]=X-B3-SpanId
spring.cloud.stream.kafka.binder.headers[2]=B3-Sampled
spring.cloud.stream.kafka.binder.headers[3]=X-B3-ParentSpanId
spring.cloud.stream.kafka.binder.headers[4]=X-Span-Name
spring.cloud.stream.kafka.binder.headers[5]=X-Span-Export
或在 comma-separated 列表中:
spring.cloud.stream.kafka.binder.headers=X-B3-TraceId,X-B3-SpanId,B3-Sampled,\
X-B3-ParentSpanId,X-Span-Name,X-Span-Export
我使用 Kafka 进行微服务之间的 Asyng 调用,我使用 Spring Sleuth 进行日志记录。 logging 没问题,但是当有消息从 Microservice1 到 Microservice2 时,logging 的消息有不同的 Trace-ID。他们不必具有相同的 trace-Id 但具有不同的 SpanId 吗?有什么特殊配置吗?
消息 headers 默认情况下不会由 Spring Cloud Kafka binder 传输,您必须按照 Spring Cloud Stream Reference Guide 中的描述通过 spring.cloud.stream.kafka.binder.headers
手动设置它。然后检查那些跟踪相关的 headers 是否被正确发送。
您可以在 application.yml 中如下设置 Zipkin headers:
spring:
cloud:
stream:
kafka:
binder:
headers:
- X-B3-TraceId
- X-B3-SpanId
- X-B3-Sampled
- X-B3-ParentSpanId
- X-Span-Name
- X-Span-Export
或者在你的 application.properties:
spring.cloud.stream.kafka.binder.headers[0]=X-B3-TraceId
spring.cloud.stream.kafka.binder.headers[1]=X-B3-SpanId
spring.cloud.stream.kafka.binder.headers[2]=B3-Sampled
spring.cloud.stream.kafka.binder.headers[3]=X-B3-ParentSpanId
spring.cloud.stream.kafka.binder.headers[4]=X-Span-Name
spring.cloud.stream.kafka.binder.headers[5]=X-Span-Export
或在 comma-separated 列表中:
spring.cloud.stream.kafka.binder.headers=X-B3-TraceId,X-B3-SpanId,B3-Sampled,\
X-B3-ParentSpanId,X-Span-Name,X-Span-Export