我正在尝试将标签或行李添加到OpenTracing跟踪中。我正在通过@Beans创建跟踪器,但在使用cloud-starter随附的自动配置时无法弄清楚如何引用活动范围。
使用此依赖项
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-cloud-starter</artifactId>
<version>0.2.4</version>
我尝试过
tracer.activeSpan().setBaggageItem("baggage", "baggage");
还有这个
scope.span().setBaggageItem("baggage", "baggage");
两者均导致NPE。即使尝试记录span或tracer对象也给了我NPE,所以看来我不必使用正确的模式进行交互。
这是跟踪程序的设置方法。
@Bean
public io.opentracing.Tracer jaegerTracer() {
SamplerConfiguration samplerConfig = SamplerConfiguration.fromEnv().withType("const").withParam(1);
SenderConfiguration senderConfig = SenderConfiguration.fromEnv().withEndpoint("http://jaeger:14268/api/traces");
ReporterConfiguration reporterConfig = ReporterConfiguration.fromEnv().withLogSpans(true).withSender(senderConfig);
Configuration config = new Configuration("eclipse-hawkular").withSampler(samplerConfig).withReporter(reporterConfig);
return config.getTracer();
}
更多信息...
请看opentracing-spring-web-contrib code,其中定义了span装饰器,这是我从中获取默认span和关联标签的地方。但是,如果执行restTemplate会触发启动活动范围的拦截,那么如何添加自定义标签/行李呢?我认为我不应该直接与spanDecorator进行交互。
更多信息...
在使用opentracing-contrib-okhttp时也尝试添加行李。跟踪效果很好,但是在使用基于拦截器的自动跟踪器时却无法弄清楚如何添加袋装。
答案 0 :(得分:0)
现在可以用这一行添加行李了。
TracerResolver.resolveTracer().activeSpan().setBaggageItem("baggage", "adding baggage");
在此过程中,还开始使用Spring 2.0.9.RELEASE和OpenTracing的单个依赖项,后者使用Jaeger跟踪器的0.32版本。
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
<version>1.0.3</version>
</dependency>