Distributed Tracing

Tracing can be an invaluable tool in debugging distributed systems performance,especially for identifying bottlenecks and understanding the latency cost ofeach component in your system. If you’re not already familiar with the ideabehind distributed tracing, Distributed Tracing for PolyglotMicroservicesgives a good overview of the concepts.

Linkerd can be configured to emit trace spans from the proxies, allowing you tosee exactly what time requests and responses spend inside. Unfortunately, unlikemost of the features of Linkerd, both code changes and configuration arerequired. You can read up on Distributed tracing in the service mesh: fourmyths for a deep dive intowhy this is.

Alternatively, Linkerd also provides some of the features that are oftenassociated with distributed tracing, including:

  • Live service topology and dependency graphs
  • Aggregated service health, latencies, and request volumes
  • Aggregated path / route health, latencies, and request volumesThese features are provided automatically, without requiring changes to theapplication or instrumentation with distributed tracing libraries.

For example, Linkerd can display a live topology of all incoming and outgoingdependencies for a service, without requiring distributed tracing or any othersuch application modification:

The Linkerd dashboard showing an automatically generated topology graph)

The Linkerd dashboard showing an automatically generated topology graph

Likewise, Linkerd can provide golden metrics per service and per route, againwithout requiring distributed tracing or any other such applicationmodification:

Linkerd dashboard showing an automatically generated route metrics)

Linkerd dashboard showing an automatically generated route metrics