Я бы хотел настроить Jaeger в своем приложении Spring. Почему-то я не могу найти правильный способ сделать это. Почти вся связанная с Spring-Jaeger документация относится к Spring Boot, где большинство свойств настраиваются автоматически. Вот мой подход.
Зависимость Maven:
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
<version>1.0.3</version>
</dependency>
Конфигурация Spring для Jaeger:
@Configuration
public class JagerConfiguration {
@Bean
public io.opentracing.Tracer jaegerTracer() {
Map<String, String> tags = new HashMap<>();
tags.put(Constants.TRACER_HOSTNAME_TAG_KEY, "localhost");
CompositeReporter reporter = new CompositeReporter(new LoggingReporter(), remoteReporter());
return new Builder("myTestSpringApp")
.withSampler(new ConstSampler(true))
.withMetricsFactory(new InMemoryMetricsFactory())
.withReporter(remoteReporter())
.withTags(tags)
.build();
}
@Bean
public RemoteReporter remoteReporter() {
return new RemoteReporter.Builder().withSender(new UdpSender("localhost", 6831, 0)).build();
}
}
Jaeger работает локально в докере через порт 6831.
docker run -d -p6831:6831/udp -p16686:16686 jaegertracing/all-in-one:latest
Как только мое приложение запустилось, я заметил, что приложение значительно замедляется, я полагаю, это из-за того, что метрики интенсивно записываются на консоль LoggingReporter.
Однако приложение My Spring не отображается в пользовательском интерфейсе Jaeger. В начале я хотел бы отследить мои конечные точки REST. Может ли кто-нибудь указать мне правильное направление, почему мое приложение отсутствует в пользовательском интерфейсе и как правильно настроить Jaeger? Возможно, есть пример проекта со Spring + Jaeger, который не опирается на устаревший Jaeger?