Jaeger с весенними ботинками

В приложении весенней загрузки (на данный момент только одно) я включил jaeger, добавив зависимость opentracing-spring-jaeger-web-starter и следующие bean-компоненты

@Bean
public static JaegerTracer getTracer() {
    io.jaegertracing.Configuration.SamplerConfiguration samplerConfig =
            io.jaegertracing.Configuration.SamplerConfiguration.fromEnv().withType("const").withParam(1);
    io.jaegertracing.Configuration.ReporterConfiguration reporterConfig =
            io.jaegertracing.Configuration.ReporterConfiguration.fromEnv().withLogSpans(true);
    io.jaegertracing.Configuration config = new io.jaegertracing.Configuration("fooService").withSampler(samplerConfig).withReporter(reporterConfig);
    return config.getTracer();
}

@PostConstruct
public void setProperty() {
    System.setProperty("JAEGER_REPORTER_LOG_SPANS", "true");
}

После запуска Jaeger в докере docker run -d --name jaeger -p 16686:16686 -p 6831:6831/udp jaegertracing/all-in-one:1.9 получаются следы.

Теперь я нашел другую зависимость и прочитал разные руководства, из-за которых я почему-то не знал, как правильно использовать Jaeger с весенней загрузкой.

Какую зависимость я бы использовал?

https://github.com/opentracing-contrib/java-spring-cloud

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

https://github.com/signalfx/tracing-examples/tree/master/jaeger-java-spring-boot-web

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

Следуя документации Jaeger, возможно,

<dependency>
    <groupId>io.jaegertracing</groupId>
    <artifactId>jaeger-client</artifactId>
    <version>$jaegerVersion</version>
</dependency>

хватило бы !?

Перед тем, как попробовать Jaeger, я использовал Zipkin, который очень легко интегрировать в Spring, так как есть стартер для сыщика. Журналы содержат идентификаторы трассировки и диапазона в отдельных полях, поэтому их можно искать, например. в Кибане. Jaeger не выполняет .

Можно ли это настроить, и если да, то как?

Возможно ли использовать Jaeger с Brave для инструментовки? Например, проект включает spring-cloud-starter-sleuth как зависимость. Есть некоторые конфликты с уже существующими bean-компонентами. Можно ли вообще использовать Jaeger с храбростью?


person Kavau    schedule 14.08.2020    source источник


Ответы (3)


Ответ на ваш вопрос о зависимостях объясняется здесь, в разделе «Зависимости» (https://github.com/opentracing-contrib/java-spring-jaeger):

Стартер opentracing-spring-jaeger-web-starter - это удобный стартер, который включает в себя как opentracing-spring-jaeger-starter, так и opentracing-spring-web-starter. Это означает, что, включив его, простые микросервисы веб-Spring Boot включают все необходимые зависимости для обрабатывать веб-запросы / ответы и отправлять трассировки в Jaeger.

Стартер opentracing-spring-jaeger-cloud-starter - это удобный стартер, который включает в себя как opentracing-spring-jaeger-starter, так и opentracing-spring-cloud-starter. Это означает, что при его включении все части стека Spring Cloud, поддерживаемые Opentracing, будут быть оснащенным

И кстати:

  • opentracing.jaeger.log-spans по умолчанию true

такой же как:

  • opentracing.jaeger.udp-sender.host = localhost
  • opentracing.jaeger.udp-sender.port = 6831
  • opentracing.jaeger.const-sampler.decision = true
  • opentracing.jaeger.enabled = true
person lefti696    schedule 26.11.2020

Эта ссылка (https://objectpartners.com/2019/04/25/distributed-tracing-with-apache-kafka-and-jaeger/) предоставляет подробные сведения о том, как включить трассировку jaeger.

Самый простой способ включить jaeger в приложение с весенней загрузкой - это добавить зависимость и необходимые свойства.


Зависимость:

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

Примеры свойств

opentracing.jaeger.udp-sender.host=localhost
opentracing.jaeger.udp-sender.port=6831
opentracing.jaeger.const-sampler.decision=true
opentracing.jaeger.enabled=true
opentracing.jaeger.log-spans=true
opentracing.jaeger.service-name=ms-name
person Venkata Madhu    schedule 13.11.2020

Чтобы настроить Jaeger, нам нужно добавить зависимость Jaeger Client в каждую службу (в pom.xml).

Зависимость клиента Jaeger:

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

После добавления зависимости нам нужно добавить конфигурацию Jaeger Client для каждой службы.

@Configuration
public class JaegerConfig {

 
  @Bean
  public JaegerTracer jaegerTracer() {

    return new io.jaegertracing.Configuration("jaeger-client")
        .withSampler(new io.jaegertracing.Configuration.SamplerConfiguration().withType(ConstSampler.TYPE)
        .withParam(1))
        .withReporter(new io.jaegertracing.Configuration.ReporterConfiguration().withLogSpans(true))
        .getTracer();
  }
 

}

Мы также можем изменить конфигурацию в соответствии со стратегией выборки, которую мы используем в Jaeger. Вы можете сослаться на официальный документ, чтобы узнать о стратегии выборки. [1]: https://www.jaegertracing.io/docs/1.22/sampling/ < / а>

После настройки Jaeger Run

docker run -d --name jaeger -p 16686: 16686 -p 6831: 6831 / udp jaegertracing / все-в-одном: 1.9

Запустите Jaeger UI на порту 16686.

person Ravi Prakash    schedule 31.05.2021