The completely manual instrumentation we did in Chapter 4, Instrumentation Basics with OpenTracing, was useful to demonstrate the core principles, but in practice, that instrumentation style is very rare, as it is very expensive and simply not scalable for large, cloud-native applications. It is also quite unnecessary because in a microservices-based application, most instrumentation trace points occur next to process boundaries, where the communications are performed by the means of a small number of frameworks, such as RPC libraries.
If we instrument the frameworks, we need to do it only once and then reuse that instrumentation across the application. This does not mean that manual instrumentation in the application has no place at all, but usually it is reserved for special cases where some unique application logic warrants it, for example, to monitor access to some custom shared resource.
There is another style of instrumentation commonly referred to as agent...