0

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

4

1 回答 1

0

现在可以用这条单行添加行李。

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>
于 2019-04-16T16:02:00.667 回答