추적자를 만든 다음 추적자를 만들려고합니다. 수행중인 작업. 그런 다음 스팬을 닫습니다. 닫기 작업으로 spanReporter.report가 호출되어 사용 가능한 Zipkin 서버 (기본 로컬 호스트)에 데이터를 게시해야합니다.Zipkin이 닫힐 때마다 Zipkin에보고 할 수있게 설정하는 방법
그러나 그런 일은 일어나지 않습니다. 아래 코드 나는 NeverSampler를 사용하고있는 것으로 나타났습니다. AlwaysSampler로 변경했습니다 (현재). 또한 NoOpSpanReporter를 기본 SpanReporter로 사용하고 있습니다 (아무 것도하지 않음). ZipkinSpanReporter로 변경하고 싶습니다. (또는 다른 것). 여기가 내가 붙어 있습니다.
질문 : 붙여 넣은 코드에
- 을 바탕으로, 내가 사용하는 것이 기본 범위 보고서의 올바른 유형이어야 하는가?
- Span Reporter가 올바른 병입니다. 나는 spring-cloud-sleuth-zipkin 클래스 ZipkingSpanReporter 클래스를 본다. 그렇다면 스프링 - 클라우드 - 썬더 - 종속성을 제거하고 단지 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
참고 : 자사의 서비스의에서
이 특정 프로젝트가없는 HTTP 호출. 그것의 데이터 처리 프로젝트.
@SpringBootApplication이 사용되지 않았습니다. (모든 zipkin 예제에서 사용합니다). 그게 필요 할까?