我正在尝试将标签或行李添加到 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 代码,这是我从中获取默认跨度和关联标签的地方。但是,如果执行 restTemplate 是触发启动活动跨度的拦截的原因,如何添加自定义标签/行李?我认为我不应该直接与 spanDecorator 交互。
还有更多信息...
还尝试在使用opentracing-contrib-okhttp时添加行李。跟踪效果很好,但在使用基于拦截器的自动跟踪器时无法弄清楚如何添加袋装。