4

マイクロサービス間の非同期呼び出しに Kafka を使用しており、ロギングには Spring Sleuth を使用しています。ロギングは問題ありませんが、Microservice1 から Microservice2 へのメッセージがある場合、ロギングのメッセージには異なる Trace-ID があります。trace-Id は同じですが、SpanId が異なる必要はありませんか? 特別な設定はありますか?

4

1 に答える 1

6

デフォルトでは、メッセージ ヘッダーは Spring Cloud Kafka バインダーによって転送されません。Spring Cloud Stream リファレンス ガイドspring.cloud.stream.kafka.binder.headersで説明されているように、手動で設定する必要があります。そして、これらのトレース関連のヘッダーが適切に送信されているかどうかを確認します。

application.yml で Zipkin ヘッダーを次のように設定できます。

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
于 2016-12-08T01:19:30.853 に答える