Outline: (1) why metrics cannot locate a slow hop; (2) Jaeger + OpenTelemetry Java agent; (3) traceparent propagation and sampling; (4) trace IDs in the logs; (5) reading traces in Jaeger; (6) custom spans.
Let the class propose how they would find it today. The answer in the page: the jdbc.query span inside ProductService took 2 180 ms of the 2 340 ms.
The localhost-vs-service-name point is a well-known Compose mistake, not stated verbatim in the page.