2016-12-02 42 views
1

我在微服务之间使用Kafka进行Asyng调用,并且我正在使用Spring Sleuth进行日志记录。日志记录是可以的,但是当从Microservice1到Microservice2有消息时,日志记录的消息具有不同的Trace-ID。难道他们不必具有相同的跟踪ID,但是不同的SpanId?有没有特别的配置?Spring Cloud Sleuth不同的跟踪ID与Kafka集成

+0

默认邮件标题不会被Kafka活页夹传送,你必须通过'spring.cloud.stream.kafka.binder.h eaders'手动描述[这里](http://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/#_kafka_binder_properties)。然后检查那些跟踪相关的头文件是否正确发送。 – tan9

+0

非常感谢您的snwer @ tan9! :d。 我发现从YAML文件的代码: 弹簧: 云: 流: 卡夫卡: 粘合剂: 头: - X-B3-TraceId - X-B3-SpanId - X-B3- Sampler - X-B3-ParentSpanId - X-Span-Name - X-Process-Id 你知道如何放在application.properties文件中吗? – AleGallagher

+0

'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 = X-B3-SpanId,X-B3-SpanId,...' – tan9

回答

2

默认情况下,邮件标题不会由Spring Cloud Kafka活页夹传输,您必须手动设置spring.cloud.stream.kafka.binder.headers,如Spring Cloud Stream Reference Guide中所述。然后检查那些跟踪相关的头文件是否正确发送。

您可以设置基普金头在你的application.yml如下:

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 

或者以逗号分隔的列表:

spring.cloud.stream.kafka.binder.headers=X-B3-TraceId,X-B3-SpanId,B3-Sampled,\ 
    X-B3-ParentSpanId,X-Span-Name,X-Span-Export 
+0

非常感谢! :d – AleGallagher