Auto-Instrumenting Go Libraries for Tracing with eBPF and OpenTelemetry
summary
An open source agent auto-instruments compiled Go binaries at runtime by analyzing the target executable, loading precompiled eBPF programs and inserting uprobe breakpoints to capture library-level events (example: net/http RoundTrip), extracting and rewriting trace context into user memory via bpf_probe_write_user, and exporting OpenTelemetry traces to a collector/Jaeger. It works without recompiling or restarting the process, requires elevated privileges, has security/kernel helper limitations, and early benchmarks show its async offload can reduce hot-path overhead compared with manual in-process instrumentation.
AI-written summary · about
chapters (8)
- 0:00Introduction to tracing
- 1:09OpenTelemetry fundamentals
- 5:46Manual instrumentation challenges
- 8:28Auto-instrumentation and eBPF
- 12:08Agent architecture
- 18:58Practical demonstration
- 30:29Security and performance tradeoffs
- 32:29Future goals and Q&A
related talks
20mStrategies for Auto-Instrumenting Go Applications Without Code Changes
31mAdvancing Observability With Compile-Time Auto-Instrumentation in Golang
33mInstrument Go Without Changing a Single Line
45mSimplifying Instrumentation in complex systems at scale with Open Telemetry
40m"Auto-Instrumenting Rust Applications Using eBPF and OpenTelemetry"
54mTracing Go Programs with eBPF!
30mMastering Distributed Tracing with Go
31mZero instrumentation observability with eBPF
