Description
This is filed as an intern project for the LFX Mentorship. Please refer to jaegertracing/jaeger#4453. Apply here.
Requirement
Have an ability to view critical path for a given trace.
Problem
A call graph can have multiple spans, but not all spans really contribute to the latency computation. Critical path is the longest chain of dependent tasks in a microservice dependency graph( i.e.,specific sequence of spans from the root to a leaf) . Reducing the critical path length is necessary to reduce the end-to-end latency of a request. Hence, a latency optimization effort benefits by prioritizing the services that are on the critical path. A tool to help identify the critical path of any trace I choose to investigate is beneficial for developers.
Tools like "Lightstep observability" are already having this feature. This effort will be a feature parity for jaeger with other tools.
Proposal
Jaeger already supports a bunch of different analysis views of a trace. It would be useful if Jaeger UI would allow a developer to view the critical path of the trace in the same context.
We propose adding a new option under that dropdown labeled “Critical path”. A critical path is a specific sequence of spans from the root to a leaf. The algorithm to compute the critical path can be run in real-time even in the browser. Once the critical path is computed, it needs to be presented to the developer.
The critical path could be rendered in either (or both) of the formats - tabular and flamegraph.
For efficiency, we may want to re-use the tabular and flame graph trace analysis views already available in Jaeger.
Open questions
No response