Cloud & DevOpsOpen SourceDeveloper Tools

OpenTelemetry OBI: Zero-Code eBPF Observability Now

Kubernetes node with eBPF kernel probes collecting distributed traces from pods - OpenTelemetry OBI observability architecture
OpenTelemetry eBPF Instrumentation (OBI) automatically instruments every pod on a Kubernetes node with zero code changes

Adding observability to a Kubernetes cluster sounds straightforward until you actually do it. You can instrument every service with an SDK — which means touching every codebase, managing per-language libraries, and convincing every team to add spans to their code. Or you accept the blind spots. OpenTelemetry eBPF Instrumentation (OBI) is a third option: deploy one DaemonSet per node, and every pod on that node gets distributed traces and RED metrics automatically. No code changes. No restarts.

OBI hit beta at KubeCon EU 2026 and is targeting a stable 1.0 release by the end of the year. If you run Kubernetes and have services that lack observability coverage — especially Go, Rust, or C++ binaries that are painful to instrument manually — it is worth evaluating now.

Where OBI Came From

OBI is not a brand-new project. It is Grafana Labs’ Beyla project, donated to the OpenTelemetry community at GrafanaCON 2025. Grafana built Beyla because they needed application-level telemetry for compiled languages without requiring recompilation — a problem that affects any team running production Go or Rust services. The project spent two years evolving from basic HTTP instrumentation to distributed tracing, SQL support, and network metrics before the donation.

The OpenTelemetry eBPF SIG launched in May 2025, now co-maintained by Grafana Labs, Splunk, Coralogix, and Odigos. Splunk’s official beta announcement at KubeCon EU 2026 was the inflection point for enterprise adoption. Grafana’s Beyla continues as a downstream commercial distribution with Grafana Cloud integrations, while OBI is the vendor-neutral upstream.

How It Works

OBI runs as a DaemonSet on each node. It attaches small eBPF probes to the Linux kernel, which intercept network traffic and system calls without running inside your containers or modifying your application binaries. A Go-based userspace agent processes the raw kernel events, reconstructs application-layer protocol traffic, and emits OpenTelemetry-compatible spans and RED metrics (Rate, Errors, Duration) to your existing OTel collector.

The coverage is broad. OBI instruments HTTP/HTTPS, HTTP/2, gRPC, PostgreSQL, MySQL, Redis, MongoDB, Kafka, GraphQL, and Elasticsearch — across Go, Rust, Python, Java, .NET, Node.js, C/C++, and Ruby — without any per-service configuration. One DaemonSet per node covers every pod running on that node.

Deploy It Now

The easiest path is Helm. Check the official Kubernetes Helm deployment guide for the full values reference, but the default install is one command:

helm install obi -n obi --create-namespace   open-telemetry/opentelemetry-ebpf-instrumentation

Requirements before you deploy:

  • Linux kernel 5.8 or newer (RHEL-family distributions support 4.18+)
  • BTF (BPF Type Format) enabled in the kernel
  • amd64 or arm64 node architecture
  • The DaemonSet needs hostPID: true and two capabilities: BPF and SYS_PTRACE

Set OTEL_EBPF_KUBE_METADATA_ENABLE: autodetect and OBI will automatically discover pods and enrich spans with Kubernetes metadata. No per-app annotation required.

OBI vs SDK Instrumentation

The honest take: OBI does not replace SDK instrumentation. It replaces the blank spots SDK instrumentation leaves behind.

OBI gives you protocol-level traces — HTTP request and response spans, database query timings, queue publish latencies. An OTel SDK gives you application-level traces — Spring handler boundaries, Hibernate transaction spans, custom business logic. Both are useful. Neither is sufficient alone.

Use OBI for immediate baseline coverage across all services, especially legacy binaries and third-party workloads you cannot touch. Use SDK instrumentation for services where you need custom spans, internal application context, or richer trace detail. OBI automatically detects running OTel SDKs and disables its own tracing for those processes to avoid signal duplication — so you can run both without conflict. Grafana’s own analysis recommends the hybrid approach as the production default.

What Is Still Missing

OBI is beta, and three things need to land before the stable 1.0 release targeted for late 2026:

  • JSON Schema-based configuration with per-service and per-process targeting
  • Consistent telemetry schema labeling that aligns OBI signals with SDK signals in the same dashboards
  • Formal production-readiness validation with defined test coverage thresholds

The current beta is usable in production, but configuration fields can change between releases. If your team needs semver stability guarantees, wait for 1.0. If you want to evaluate coverage and influence what the roadmap prioritizes, start testing now.

The Verdict

OBI solves the instrumentation coverage problem for Kubernetes clusters in a way that SDK-first approaches cannot: it works across every language and runtime without touching your code. The Helm install takes minutes. The tradeoff is protocol-level visibility rather than application-level insight — which is a reasonable first layer for services that currently have no observability at all.

The 1.0 GA timeline is close enough to plan around. Deploy OBI in a staging cluster now, evaluate the coverage you get, and decide which services still warrant SDK instrumentation on top. The approach the OTel team recommends — and Grafana’s own data supports — is running both together.

ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *