Сервисные зависимости не отображаются в Jaeger между Spring Boot Applications - PullRequest
1 голос
/ 19 марта 2019

В настоящее время я пытаюсь отследить два приложения Spring Boot (2.1.1) с помощью Jaeger, используя https://github.com/opentracing-contrib/java-spring-web

<dependency>
  <groupId>io.opentracing.contrib</groupId>
  <artifactId>opentracing-spring-web-starter</artifactId>
</dependency> 

также попытался безуспешно

<dependency>
  <groupId>io.opentracing.contrib</groupId>
  <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
</dependency>

Трассировка Spans для каждой отдельной службы / приложения работает нормально, но не по запросам REST на глобальном уровне. Между сервисами нет зависимости, как вы можете видеть на картинке.

Missing App in trace between 2 Apps

Разве это не должно работать из коробки через библиотеку? Или я должен реализовать некоторые перехватчики и фильтры запросов самостоятельно, и если да, то как?

Вы можете ПРОВЕРИТЬ минималистичный проект, содержащий проблему здесь

Кстати: Jaeger работает как все-в-одном через докер и работает как положено

docker run \
--rm \
--name jaeger \
-p5775:5775/udp \
-p6831:6831/udp \
-p6832:6832/udp \
-p5778:5778 \
-p16686:16686 \
-p14268:14268 \
-p9411:9411 \
jaegertracing/all-in-one:latest

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Проблема в том, что вы используете RestTemplate template = new RestTemplate(); для получения экземпляра RestTemplate для выполнения вызова REST.

Это означает, что Opentracing не может обработать вызов для добавления необходимых заголовков HTTP.

Пожалуйста, рассмотрите возможность использования @Autowired RestTemplate restTemplate

0 голосов
/ 19 марта 2019

Не могли бы вы попробовать использовать более новую версию Jaeger: https://www.jaegertracing.io/docs/latest/getting-started/#all-in-one - на самом деле 1.11 уже вышел, так что можете попробовать это.

...