In this chapter, we talked about tracing instrumentation. We discussed common tasks that need to be addressed by the instrumentation, from simple annotations to in-process context propagation, to using inject/extract trace points to transfer distributed context across processes.
We took a brief detour and looked at using the baggage API for passing additional metadata alongside the distributed call graph.
We finished with a review of using off-the-shelf open source instrumentation for popular libraries, which can be applied with minimal changes to your application, from a few lines of code to literally zero changes. Best of all, all the instrumentation we reviewed was completely vendor-agnostic. We used it with Jaeger tracers, but they can be easily swapped for any other OpenTracing-compatible tracers.
In the next chapter, we will look at a more advanced case of instrumentation involving applications with asynchronous behavior: either internal-using futures or external-using messaging...