首页 文章

如何设置侦听范围,以便在Zipkin关闭时向其报告

提问于
浏览
0

我试图创建一个跟踪器,然后从跟踪器创建一个范围 . 表演工作 . 然后关闭 Span . 我希望close操作会调用spanReporter.report,它应该将数据发布到可用的Zipkin服务器(默认localhost)

但是,这种情况并没有发生 . 代码如下 . 我注意到我正在使用NeverSampler . 将其更改为AlwaysSampler(暂时) . 我也使用NoOpSpanReporter作为默认的SpanReporter(它什么都不做) . 我想将其更改为ZipkinSpanReporter . (或者是其他东西) . 这是我被困的地方 .

问题:

  • 根据粘贴的代码,我应该使用哪种正确类型的默认范围报告?

  • 哪个jar将具有正确的Span Reporter . 我在spring-cloud-sleuth-zipkin中看到了ZipkingSpanReporter类 . 那么,我应该删除spring-cloud-sleuth- *依赖项并将其替换为zipkin依赖项吗?


public class TestClass {

    private TestClass() {
        // Default constructor
    }

    public static DefaultTracer createDefaultTracer() {
        boolean isTraceId128 = false;
        Sampler sampler = createDefaultTraceSampler();
        Random random = createDefaultRandomForSpanIds();
        SpanNamer spanNamer = createDefaultSpanNamer();
        SpanLogger spanLogger = createDefaultSpanLogger();
        SpanReporter spanReporter = createDefaultSpanReporter();
        TraceKeys traceKeys = new TraceKeys();

        return new DefaultTracer(sampler, random, spanNamer, spanLogger, spanReporter, isTraceId128, traceKeys);
    }

    public static Random createDefaultRandomForSpanIds() {
        return new Random();
    }

    public static Sampler createDefaultTraceSampler() {
        //return NeverSampler.INSTANCE;
        return new AlwaysSampler();
    }

    public static SpanNamer createDefaultSpanNamer() {
        return new DefaultSpanNamer();
    }

    public static SpanReporter createDefaultSpanReporter() {
        return new NoOpSpanReporter(); //What default span reporter should I use
    }

    public static SpanLogger createDefaultSpanLogger() {
        return new NoOpSpanLogger(); //I do not care about logging spans using slf4j for now
    }
}

现在使用上面的代码片段:

DefaultTracer tracer = TestClass.createDefaultTracer();
Span mySpan=tracer.createSpan("testSpan");
 //Do work
tracer.close(mySpan);//This should stop the span and report the span to zipkin for display

Note:
此特定项目在其任何服务中都没有任何http调用 . 它是一个数据处理项目 .
@SpringBootApplication尚未使用 . (所有zipkin示例都使用它) . 有必要吗?

1 回答

  • 0

    看起来 Sleuth Span 与Zipkin Span 不同 . 因此,在上面的代码中,无法使用zipkin span报告器实例化默认跟踪器 . 我将 Sleuth 范围转换为拉链 Span ,然后将其报告为拉链 . 转换它的类在spring-cloud-sleuth-stream中可用 . 我使用了几乎相同的类进行了一些调整 .

相关问题