OpenTelemetry eBPF Instrumentation

Learn how to use OpenTelemetry eBPF Instrumentation for automatic instrumentation.

Ви переглядаєте англійську версію сторінки, тому що її ще не було повністю перекладеною українською. Бажаєте допомогти? Дивіться як взяти Участь.

PS. Неофіційний український переклад (не перевірений і не ухвалений OpenTelemetry) доступний на сайті члена спільноти, створеному на основі PR #5891. Ми надаємо це посилання як тимчасовий захід підтримки українських читачів та потенційних учасників, доки не буде готовий офіційний переклад.

OpenTelemetry libraries provide telemetry collection for popular programming languages and frameworks. However, getting started with distributed tracing can be complex. In some compiled languages like Go or Rust, you must manually add tracepoints to the code.

OpenTelemetry eBPF Instrumentation (OBI) is an auto-instrumentation tool to easily get started with Application Observability. OBI uses eBPF to automatically inspect application executables and the OS networking layer, and capture trace spans related to web transactions and Rate Errors Duration (RED) metrics for Linux HTTP/S and gRPC services. All data capture occurs without any modifications to application code or configuration.

OBI offers the following features:

  • Wide language support: Java (JDK 8+), .NET, Go, Python, Ruby, Node.js, C, C++, and Rust
  • Lightweight: No code changes required, no libraries to install, no restarts needed
  • Efficient instrumentation: Traces and metrics are captured by eBPF probes with minimal overhead
  • Distributed tracing: Distributed trace spans are captured and reported to a collector
  • Log enrichment: Enrich JSON logs with trace context for correlation
  • Kubernetes-native: Provides configuration-free auto-instrumentation for Kubernetes applications
  • Visibility into encrypted communications: Capture transactions over TLS/SSL without decryption
  • Context propagation: Propagate trace context across services automatically
  • Protocol support: HTTP/S, gRPC, gRPC-Web, JSON-RPC, MQTT, NATS, AMQP 1.0, Memcached, and more
  • Database instrumentation: PostgreSQL (including pgx driver), MySQL, MSSQL, MongoDB, Redis, Couchbase (N1QL/SQL++ and KV protocol)
  • GenAI instrumentation: Trace and metrics for OpenAI, Anthropic Claude, Google AI Studio (Gemini), AWS Bedrock, Qwen (DashScope), MCP over JSON-RPC, embedding and rerank APIs, and vector retrieval systems
  • Low cardinality metrics: Prometheus-compatible metrics with low cardinality for cost reduction
  • Network observability: Capture network flows between services with byte and packet counters, TCP RTT, retransmit, connection, and socket I/O metrics
  • Enhanced service discovery: Improved service name lookup with DNS resolution
  • Collector integration: Run OBI as an OpenTelemetry Collector receiver component

Recent highlights (v0.10.0)

OBI v0.10.0 expands distributed tracing, runtime telemetry, protocol coverage, and operational controls:

  • gRPC context propagation: Added language-agnostic network-level traceparent propagation for gRPC over HTTP/2
  • Runtime metrics: Added Go runtime metrics and opt-in HotSpot JVM memory metrics without requiring SDK changes in the target application
  • More network telemetry: Added network packet, TCP retransmit, and TCP socket I/O metrics
  • SunRPC support: Added traces and metrics for ONC RPC protocols over TCP, including NFS-related programs
  • Asynchronous Go causality: Added experimental span links for supported Go channel handoffs
  • Safer operations and export: Added health endpoints, Unix domain socket support for health checks and OTLP export, resource-attribute selection, and automatic redaction of sensitive URL query parameters
  • Broader GenAI coverage: Added vector retrieval telemetry for Pinecone, Qdrant, Milvus, Zilliz, Chroma, and Weaviate

For a complete list of changes and upgrade notes, see the release notes.

If you want to explore the upstream examples, see the NGINX walkthrough and the Apache walkthrough.

How OBI works

The following diagram shows the high-level OBI architecture and where eBPF instrumentation fits into the telemetry pipeline.

OBI eBPF architecture

Compatibility

OBI supports Linux environments that meet the following requirements:

RequirementSupported
CPU architectureamd64, arm64
Linux kernel5.8+, or RHEL-family Linux 4.18+ with the required eBPF backports
Kernel featuresBTF
PrivilegesRoot, or the Linux capabilities required by the enabled OBI features

OBI publishes the following supported release artifacts:

ArtifactSupported platforms
obi binary archiveLinux amd64, Linux arm64
k8s-cache binary archiveLinux amd64, Linux arm64
otel/ebpf-instrument container imageLinux amd64, Linux arm64
otel/ebpf-instrument-k8s-cache container imageLinux amd64, Linux arm64

OBI can be deployed on standalone Linux hosts, in containers, and on Kubernetes when the environment meets the requirements above.

OBI does not support non-Linux operating systems, Linux architectures other than amd64 and arm64, Linux environments without BTF, or kernel versions earlier than Linux 5.8 outside the documented RHEL-family 4.18+ exception.

Feature-specific support details are documented in these guides:

  • Distributed traces: context propagation support, runtime-specific requirements, and distributed tracing limitations
  • Trace context association: parent-child association support for asynchronous and threaded request handling
  • Export data: protocol, database, messaging, GenAI, GPU, and Go library instrumentation support

Limitations

OBI provides application and protocol observability without code changes, but it does not replace language-level instrumentation in every scenario. Use language agents or manual instrumentation when you need custom spans, application-specific attributes, business events, or other in-process telemetry that eBPF-based instrumentation cannot derive automatically.

OBI can automatically capture network and protocol activity, but it cannot always recover application-specific details that are not visible from eBPF observation points.

Some features also have additional caveats or narrower support than the core platform requirements. For details, refer to the feature-specific documentation for distributed traces and exported instrumentation.

For a comprehensive list of capabilities required by OBI, refer to Security, permissions and capabilities.

Get started with OBI

  • Follow the setup documentation to get started with OBI either with Docker or Kubernetes.
  • Learn about trace-log correlation to connect traces with application logs and enrich JSON logs with trace context.
  • Discover how to run OBI as a Collector receiver for centralized telemetry processing.

Troubleshooting


Configure OBI

Learn how to configure OBI.

Network metrics

Configuring OBI to observe point-to-point network metrics.

Set up OBI

Learn how to set up and run OBI.

OBI exported metrics

Learn about the application, runtime, and network metrics OBI can export.

Distributed traces with OBI

Learn about OBI’s distributed traces support.

Measuring total request times, instead of service times

How to measure total request times from the point of view of the client

OBI security, permissions, and capabilities

Privileges and capabilities required by OBI

Troubleshooting

Troubleshooting OBI common issues and errors

OBI and Cilium compatibility

Compatibility notes when running OBI alongside Cilium

Trace context association in OBI

Learn how OBI associates outgoing requests with incoming parent requests for distributed traces.

OBI metrics cardinality

Overview of how to calculate the cardinality of metrics produced by a default OBI installation, considering the size and complexity of the instrumented environment.

Trace-log correlation

Learn how OBI correlates application logs with distributed traces for faster debugging and troubleshooting.


Востаннє змінено July 20, 2026: Update OBI docs for v0.10.0 (#10631) (f4cc67cd)