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

时间:2017-05-24 02:25:57

标签: zipkin opentracing

我正在尝试创建一个跟踪器,然后是跟踪器的跨度。 表演工作。 然后关闭跨度。 我希望close操作会调用spanReporter.report,它应该将数据发布到可用的Zipkin服务器(默认localhost)

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

问题:

  1. 根据粘贴的代码,我应该使用哪种正确类型的默认范围报告?
  2. 哪个jar会有正确的Span Reporter。我在spring-cloud-sleuth-zipkin中看到了ZipkingSpanReporter类。那么,我应该删除spring-cloud-sleuth- *依赖项并将其替换为zipkin依赖项吗?
  3. 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
    

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

1 个答案:

答案 0 :(得分:0)

似乎侦探跨度与Zipkin跨度不同。 因此,在上面的代码中,没有办法用zipkin span报告器实例化默认跟踪器。 我将侦探范围转换为拉链跨度,然后将其报告为zipkin。转换它的类在spring-cloud-sleuth-stream中可用。我使用了几乎相同的类进行了一些调整。