Spring Sleuth Zipkin 额外场传播
Spring Sleuth Zipkin Extra Field Propagation
我是分布式日志记录的新手,我需要有关跨 Http 请求和消息传递请求传播额外字段的帮助。
目前,我能够传播 traceId 和 spanId,但我需要传递 correlationId 才能传播到所有微服务。
spring:
sleuth:
correlation-fields:
- x-correlation-id
remote-fields:
- x-correlation-id
logback.xml
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p [${appName},%X{traceId:-},%X{parentId:-},%X{spanId:-},%X{correlation-id:-}]) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%t]){faint} %clr(%logger{20}:%line){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
我有点好奇如何将关联ID传递给其他服务。
In case the message starts from Service A -
Service A (Message Started,CorrelationID-123) -> ServiceB (CorrelationID-123) -> ServiceC(CorrelationID-123)
In case if it started with Service B
Service B (Message Started,CorrelationID-123) -> ServiceA (CorrelationID-123) -> ServiceC(CorrelationID-123)
- 如何将关联 ID 传递给 Kafka 消息?
- 如何将关联 ID 传递给 Http 请求?
- 是否可以使用来自其他服务的现有 tracedId?
我觉得你说的correlationId其实就是traceId,如果你刚接触分布式追踪,我强烈推荐阅读spring-cloud-sleuth
的文档,introduction section will give you a basic understanding while the propagation会告诉你如何您的字段跨服务传播。
我还推荐这个演讲:Distributed Tracing: Latency Analysis for Your Microservices - Grzejszczak, Krishna.
准确回答您的问题:
How the correlation id will be passed to Kafka messages?
Kafka 有 headers,我假设这些字段是通过 Kafka 传播的 headers。
How the correlation id will be passed to Http requests?
通过 HTTP Headers.
Is it possible to use existing tracedId from other service?
不仅可能,Sleuth 开箱即用。如果传入的request/message/event/etc中有traceId。 Sleuth 不会创建新的但会使用它(请参阅我上面链接的文档)。
我是分布式日志记录的新手,我需要有关跨 Http 请求和消息传递请求传播额外字段的帮助。 目前,我能够传播 traceId 和 spanId,但我需要传递 correlationId 才能传播到所有微服务。
spring:
sleuth:
correlation-fields:
- x-correlation-id
remote-fields:
- x-correlation-id
logback.xml
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p [${appName},%X{traceId:-},%X{parentId:-},%X{spanId:-},%X{correlation-id:-}]) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%t]){faint} %clr(%logger{20}:%line){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
我有点好奇如何将关联ID传递给其他服务。
In case the message starts from Service A -
Service A (Message Started,CorrelationID-123) -> ServiceB (CorrelationID-123) -> ServiceC(CorrelationID-123)
In case if it started with Service B
Service B (Message Started,CorrelationID-123) -> ServiceA (CorrelationID-123) -> ServiceC(CorrelationID-123)
- 如何将关联 ID 传递给 Kafka 消息?
- 如何将关联 ID 传递给 Http 请求?
- 是否可以使用来自其他服务的现有 tracedId?
我觉得你说的correlationId其实就是traceId,如果你刚接触分布式追踪,我强烈推荐阅读spring-cloud-sleuth
的文档,introduction section will give you a basic understanding while the propagation会告诉你如何您的字段跨服务传播。
我还推荐这个演讲:Distributed Tracing: Latency Analysis for Your Microservices - Grzejszczak, Krishna.
准确回答您的问题:
How the correlation id will be passed to Kafka messages?
Kafka 有 headers,我假设这些字段是通过 Kafka 传播的 headers。
How the correlation id will be passed to Http requests?
通过 HTTP Headers.
Is it possible to use existing tracedId from other service?
不仅可能,Sleuth 开箱即用。如果传入的request/message/event/etc中有traceId。 Sleuth 不会创建新的但会使用它(请参阅我上面链接的文档)。