Включить трассировку с помощью jaeger в микросервисах Java dropwizard

#java #kubernetes #jax-rs #dropwizard #jaeger

#java #kubernetes #jax-rs #dropwizard #jaeger

Вопрос:

У меня есть приложение на основе микросервисов, работающее на Kubernetes. Микросервисы создаются с использованием платформы dropwizard.

Я хотел бы включить трассировку, чтобы отслеживать запросы и иметь решение, которое может помочь в отладке.

В принципе, я знаю реализацию с использованием Spring boot, которая довольно проста. но мне интересно, как это может быть в приложении на основе dropwizard? на самом деле, возможно ли это? Может кто-нибудь поделиться своим опытом в этой теме? И предоставьте мне ресурсы или примеры того, как я могу это сделать?

Пожалуйста, убедитесь, что я не использую сервисную сетку.

Ответ №1:

Я включил инструментирование в службах с использованием этих двух зависимостей:

         implementation "io.opentracing.contrib:opentracing-jaxrs2:1.0.0"
        implementation "io.jaegertracing:jaeger-client:1.4.0"
  

И я использовал jaeger-client для настройки трассировщика с использованием переменных среды:

 JAEGER_SERVICE_NAME: yourServiceName
  

Получение экземпляра трассировщика:

     public static Tracer jaegerTracer() {
        return Configuration.fromEnv()
                .getTracer();
    }
  

Наконец, в приложении dropwizard вы должны зарегистрировать трассировщик следующим образом

    GlobalTracer.registerIfAbsent(jaegerTracer());
   jersey.register(new ServerTracingDynamicFeature());

  
    env.servlets()
           .addFilter("span-finisher", new SpanFinishingFilter())
           .addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");