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