在 Java dropwizard 微服务上使用 jaeger 启用跟踪

Enable tracing using jaeger on Java dropwizard microservices

我在 Kubernetes 上有一个基于微服务的应用程序 运行。 微服务是使用 dropwizard 框架构建的。

我想启用跟踪以跟踪请求并有一个可以帮助调试东西的解决方案。

基本上,我知道使用 Spring 启动的实现非常简单。 但我想知道它如何在基于 dropwizard 的应用程序中出现? 实际上,这可能吗? 有人可以分享他在这个话题上的经验吗? 并向我提供有关如何做到这一点的资源或示例?

请确保我没有使用服务网格。

我使用这两个依赖项在服务上启用了检测:

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