javaasynchronousservlet-3.0vert.xtrace

Any java async tracing framework?


I'd like to trace my async application with some key checkpoint. Is there any popular framework I can use?

For example, I may choose to use vert.x or any other java async framework. For each request/response cycle, I'd make some checkpoint to log something while these points might happen in different threads.

I'd like to see an aggregated view of 1 request to see what's going on. Supporting distributed case would be better but single JVM is good to go.


Solution

  • What you are looking for is OpenTracing. It's an API that allows you to have distributed tracing features in a way that is vendor agnostic.

    For your specific case, you'd have to handle the context propagation yourself, as there's no other (reliable) way to do that on OpenTracing yet for teh async case. For other cases (sync JAX-RS, Servlets, Spring Boot, ...), it would be safe to use the native framework integration and/or the Java agent rules.

    For Vert.x, you'll need to inject the span context into Vert.x' message, and extract this context later on.

    There's an example of OpenTracing + Vert.x on the Hawkular APM example directory, that might help you get started. Note, however, that you might want to use another backend should you decide to move forward, as we (Hawkular APM team) decided to join forces with Jaeger for the OpenTracing backend.