Having the ability to know where and when each message has been sent or received between your systems is becoming even more relevant today, where distributing components, like microservices, are becoming the defacto architecture in enterprises trying to develop distributed systems that scale.
Even when you have metrics and logging tools implemented, that’s not enough to recreate the journey of each transaction and how they propagate between components .
Tracing messages between distributed systems gives visibility over communication and performance per transaction received from a client, and how this propagates between different components around your systems.
Opentracing is an API that is aimed to standardize how systems can implement distributed tracing.
So, from the client (e.g. mobile, web), to the proxy, APIs, and backend systems (i.e. databases and messaging systems) mark how long it takes to communicate with each component.
This presentation will show how to instrument your Java applications with OpenTracing to be able to trace messages from web/mobile clients to your services and back to your data systems, and in this way, how to visualize, transaction per transaction, how your messages flows using a couple of the OpenTracing tools available, Uber's Jaeger  and Zipkin  .