如何使用Spring-Cloud Starter添加标签或行李?

时间:2019-04-04 01:13:01

标签: spring opentracing jaeger

我正在尝试将标签或行李添加到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时也尝试添加行李。跟踪效果很好,但是在使用基于拦截器的自动跟踪器时却无法弄清楚如何添加袋装。

1 个答案:

答案 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>