如何强制 Zipkin/Brave/Spring-Cloud-Sleuth span 可导出?
How to force Zipkin/Brave/Spring-Cloud-Sleuth span to be exportable?
如何强制 Zipkin span 可导出?
在下面的代码跨度中,有时可以导出,有时不能以不可重复的方式导出。
在我看来,如果我评论第一个 scopedSpan,那么第二个手动创建的 spanInScope 是可导出的,但是第一个 scopedSpan 如何阻止第二个 spanInScope 被导出?他们如何干扰?
@SneakyThrows
private void debugScopedSpan(final String label) {
ScopedSpan scopedSpan = tracer.startScopedSpan(label + "_1").tag("type", "manual");
try {
log.info("===== debugScopedSpan_1 {}", label);
} catch (RuntimeException | Error e) {
scopedSpan.error(e);
throw e;
} finally {
scopedSpan.finish();
}
// Why both above scopedSpan and below spanInScope cant be exportable at the same time??? How do they iterfere with each other?
Span trace = tracer.nextSpan().name(label+"_2").tag("type", "manual").start();
final Tracer.SpanInScope spanInScope = tracer.withSpanInScope(trace);
log.info("===== debugScopedSpan_2 {}", label);
spanInScope.close();
trace.finish();
}
这是因为抽样。请创建一个sampler类型的bean,其值可以是Sampler.ALWAYS或者设置概率属性为1.0
如何强制 Zipkin span 可导出? 在下面的代码跨度中,有时可以导出,有时不能以不可重复的方式导出。
在我看来,如果我评论第一个 scopedSpan,那么第二个手动创建的 spanInScope 是可导出的,但是第一个 scopedSpan 如何阻止第二个 spanInScope 被导出?他们如何干扰?
@SneakyThrows
private void debugScopedSpan(final String label) {
ScopedSpan scopedSpan = tracer.startScopedSpan(label + "_1").tag("type", "manual");
try {
log.info("===== debugScopedSpan_1 {}", label);
} catch (RuntimeException | Error e) {
scopedSpan.error(e);
throw e;
} finally {
scopedSpan.finish();
}
// Why both above scopedSpan and below spanInScope cant be exportable at the same time??? How do they iterfere with each other?
Span trace = tracer.nextSpan().name(label+"_2").tag("type", "manual").start();
final Tracer.SpanInScope spanInScope = tracer.withSpanInScope(trace);
log.info("===== debugScopedSpan_2 {}", label);
spanInScope.close();
trace.finish();
}
这是因为抽样。请创建一个sampler类型的bean,其值可以是Sampler.ALWAYS或者设置概率属性为1.0