Как объединить opentracing / jaeger с весенним облаком, hystrix и feign? - PullRequest
0 голосов
/ 24 ноября 2018

В последнее время мы настроили сервер Jaeger для отслеживания всех запросов по всей нашей системе.Первоначальная настройка работала очень хорошо, просто добавляя необходимые весенние (облачные) начальные зависимости в наши файлы сборки.Каждый раз, когда запрос попадает на один из наших серверов, создается новый промежуток, который передается на сервер jaeger, который был настроен с использованием образа док-станции «все в одном».

Наиболее важными зависимостями являются следующие:

compile "org.springframework.boot:spring-boot-starter-web"
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-starter-undertow"
compile "org.springframework.boot:spring-boot-starter-aop"

compile "org.springframework.cloud:spring-cloud-starter-netflix-hystrix:2.0.2.RELEASE"
compile "org.springframework.cloud:spring-cloud-starter-openfeign:2.0.2.RELEASE"

compile "io.opentracing.contrib:opentracing-spring-cloud-feign-starter:0.2.1"
compile "io.opentracing.contrib:opentracing-spring-jaeger-cloud-starter:0.2.1"
compile "io.opentracing.contrib:opentracing-spring-jaeger-starter:0.2.1"
compile "io.opentracing.contrib:opentracing-spring-web-autoconfigure:0.2.1"

Пока на сервере создаются промежутки, необходимые заголовки не пересылаются симулированным клиентам.Согласно документации, добавление зависимости opentracing-spring-cloud-feign-starter должно быть уловкой, но до сих пор ни один из симулированных клиентов не работал.

Я также добавил точку останова в класс автоматической настройки, предоставляемый opentracing

@Bean
FeignContextBeanPostProcessor feignContextBeanPostProcessor(BeanFactory beanFactory) {
    return new FeignContextBeanPostProcessor(tracer, beanFactory, spanDecorators);
}

, и этот метод вызывается при запуске приложения.В журналах также есть некоторая информация об инициализации jaeger / opentracing:

main 22:26:53.371 3222 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'io.opentracing.contrib.spring.cloud.async.DefaultAsyncAutoConfiguration$DefaultTracedAsyncConfigurerSupport' of type [io.opentracing.contrib.spring.cloud.async.DefaultAsyncAutoConfiguration$DefaultTracedAsyncConfigurerSupport$$EnhancerBySpringCGLIB$$4ab0858a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:53.478 3329 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'io.opentracing.contrib.spring.cloud.async.DefaultAsyncAutoConfiguration' of type [io.opentracing.contrib.spring.cloud.async.DefaultAsyncAutoConfiguration$$EnhancerBySpringCGLIB$$4bce5627] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:53.670 3521 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'io.opentracing.contrib.spring.cloud.feign.FeignTracingAutoConfiguration' of type [io.opentracing.contrib.spring.cloud.feign.FeignTracingAutoConfiguration$$EnhancerBySpringCGLIB$$3a2361a6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:53.905 3756 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration' of type [io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration$$EnhancerBySpringCGLIB$$5c956416] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:53.942 3793 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'opentracing.jaeger-io.opentracing.contrib.java.spring.jaeger.starter.JaegerConfigurationProperties' of type [io.opentracing.contrib.java.spring.jaeger.starter.JaegerConfigurationProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:53.962 3813 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'metricsFactory' of type [io.jaegertracing.internal.metrics.NoopMetricsFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:53.977 3828 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'reporterMetrics' of type [io.jaegertracing.internal.metrics.Metrics] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:53.982 3833 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'sampler' of type [io.jaegertracing.internal.samplers.ConstSampler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:54.013 3864 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'reporter' of type [io.jaegertracing.internal.reporters.CompositeReporter] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:54.028 3879 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'tracer' of type [io.jaegertracing.internal.JaegerTracer] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
main 22:26:59.495 9346 INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$216245cc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

Я потратил довольно много времени, читая документацию и ища примеры, как правильно настроить весеннюю загрузку / облачное приложение.для того, чтобы работать с притворными клиентами, но пока мне не повезло.Большинство примеров используют RestTemplate Springs вместо клиентов Feign.

Я был бы очень счастлив, если бы кто-то мог указать мне правильное направление.

1 Ответ

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

Оказывается, что Feign клиенты в настоящее время не поддерживаются или, если быть точным, пружина запускает не настраивать клиентов Feign соответственно.Если вы хотите использовать Jaeger со своими клиентами Feign, вам необходимо обеспечить собственную интеграцию.

По моему опыту, егерское сообщество оказывает меньшее поддержку, поэтому вы должны получить такие знания самостоятельно, что, на мой взгляд, является большим недостатком, и вам, вероятно, следует подумать об использовании альтернативы.

...