Distributed tracing is a technique for troubleshooting and profiling distributed microservices applications. In a microservices architecture, a single request may trigger additional requests to other services. A failure or slow request may not be caused by the originating service directly, but instead be triggered by another dependent service. Distributed tracing instruments requests so that a user can easily visualize and understand the full call stack for a request. This is roughly analogous to a "distributed stack trace".