Other people have mentioned end-to-end tracing frameworks, which are heavyweight application-level frameworks that are similar to logging.
However, lightweight cross-component dynamic instrumentation that correctly captures causality is still an open research problem. This is actually something I have done some work on recently in my system Pivot Tracing[1] which won a best paper award at the conference it was presented at (SOSP). Pivot Tracing combines dynamic instrumentation with causal tracing in order to address precisely the problem you describe. The code for the system is open source and available on GitHub[2].
This looks good, but requires changes to the system being traced. In my case, the system I'm most interested in tracing is a closed-source black box, so changing it isn't an option.
However, lightweight cross-component dynamic instrumentation that correctly captures causality is still an open research problem. This is actually something I have done some work on recently in my system Pivot Tracing[1] which won a best paper award at the conference it was presented at (SOSP). Pivot Tracing combines dynamic instrumentation with causal tracing in order to address precisely the problem you describe. The code for the system is open source and available on GitHub[2].
[1] http://cs.brown.edu/~jcmace/papers/mace15pivot.pdf
[2] https://github.com/brownsys/tracing-framework