我正在尝试将标签或行李添加到 OpenTracing 跟踪中。我正在通过@Beans创建跟踪器,但在使用云启动器附带的自动配置时无法弄清楚如何引用活动跨度。
使用此依赖项
<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。即使尝试记录跨度或跟踪器对象也会给我一个 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 代码,这是我从中获取默认跨度和相关标签的地方。但是,如果执行 restTemplate 是触发启动活动跨度的拦截的原因,如何添加自定义标签/行李?我假设我不应该直接与spanDecorator交互。
更多信息...
在使用opentracing-contrib-okhttp时也尝试添加行李。跟踪效果很好,但在使用基于拦截器的自动跟踪器时无法弄清楚如何添加袋装。
现在可以使用此单行添加行李。
TracerResolver.resolveTracer().activeSpan().setBaggageItem("baggage", "adding baggage");
在研究的过程中,也开始使用Spring 2.0.9.RELEASE和OpenTracing的单个依赖项,该依赖项使用0.32版本的Jaeger跟踪器。
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
<version>1.0.3</version>
</dependency>