#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, "/*");