2

我需要将带有现有 ID 的 traceId(我们从主源应用程序创建了某种相关 ID)设置为勇敢的跟踪器。

我不想使用 Spring Sleuth/brave created 一个,因为我想让它在我的不同微服务中保持一致。我能够创建跟踪和跨度,并且能够将所有详细信息发送到 Zipkin。我的示例片段:

import brave.Span;
import brave.Span.Kind;
import brave.Tracer;
import brave.propagation.TraceContext;  

span = this.tracer.nextSpan().name("myservice");
span.kind(Kind.SERVER);
span.tag("path", servletPath).start();

我正在使用:Spring Cloud 'Greenwich.BUILD-SNAPSHOT' 并且勇敢。整个目的是在zipkin ui中使用correlationId而不是traceId进行搜索。

4

1 回答 1

0

您将需要自己的PropagationFactory实现。这是默认的:https ://github.com/openzipkin/brave/blob/master/brave/src/main/java/brave/propagation/B3Propagation.java

您可以创建一个 bean,侦探应该使用它而不是这个。

更具体地说,您将需要一个带有自定义实现的TraceContext.Extractor<C>实现。然后,这可以从您的标头中提取跟踪 ID,并添加返回适当的TraceContext. 然后它可以使用正常的标头传递它。如果您想在向下游发送时使用相同的相关标头,那么您还必须实现TraceContext.Injector<C>.

于 2018-12-06T16:27:44.977 回答