Where Are My App’s Traces? Understanding the Magic of Instrumentation
Blog post from Logz.io
Instrumentation, as discussed in the OpenObservability Talks podcast by Dotan Horovits and guest Eden Federman, involves modifying applications to report observability signals like traces, metrics, and logs. This process can be done manually or automatically, with each method having its pros and cons. Manual instrumentation requires direct code changes to output relevant data, such as using logging libraries or SDKs, but becomes cumbersome at scale, especially in microservices environments. Distributed tracing, in particular, poses challenges due to the need for context propagation across service boundaries to construct a complete trace. Automatic instrumentation varies across programming languages, with dynamic languages like JavaScript and Python differing from compiled languages like Java and Go in terms of ease and data collection capabilities. OpenTelemetry offers a standardized approach and guidelines for both manual and automatic instrumentation, aiding developers in collecting and structuring the necessary data for effective observability.