---
title: "Compare Beyla and OpenTelemetry eBPF Instrumentation | Grafana Beyla documentation"
description: "Compare Grafana Beyla with OpenTelemetry eBPF Instrumentation (OBI), including how the projects relate, how their configuration differs, and what Beyla adds for the Grafana ecosystem."
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# Compare Beyla and OpenTelemetry eBPF Instrumentation

[OpenTelemetry eBPF Instrumentation](https://opentelemetry.io/docs/zero-code/obi/) (OBI) is the open source, vendor-neutral eBPF auto-instrumentation project in OpenTelemetry. Grafana Beyla is the Grafana Labs distribution of OBI.

Grafana Labs [donated the Beyla code to the OpenTelemetry project](https://grafana.com/blog/opentelemetry-ebpf-instrumentation-beyla-donation/) in 2025 as OBI. A community of contributors, including Grafana Labs, maintains OBI.

OBI works with the Grafana Cloud OTLP endpoint, and with any OpenTelemetry Collector or Prometheus-compatible backend.

## How Beyla and OBI relate

The [OBI code repository](https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation) contains the eBPF auto-instrumentation code, and the [Grafana Beyla code repository](https://github.com/grafana/beyla) imports it as a library. Every feature that’s available in OBI is also available in Beyla. Both projects are open source, and both export data in the OpenTelemetry format and as Prometheus metrics.

Beyla adds features on top of OBI that make it easier to adopt eBPF-based auto-instrumentation in the Grafana ecosystem. For details, refer to [What Beyla adds](https://grafana.com/docs/beyla/latest/beyla-and-obi/compare/#what-beyla-adds).

For metrics and attributes that don’t follow an OpenTelemetry semantic convention because none exists yet, Beyla prefixes the names with `beyla_` while OBI prefixes them with `obi_`. For example, Beyla reports the network-level flow bytes metric as `beyla_network_flow_bytes_total`, and OBI reports it as `obi_network_flow_bytes_total`.

### Configuration

Beyla and OBI share the Config v1 YAML schema, which the Beyla documentation uses. Most Beyla configuration examples also work with OBI Config v1, except for the features in [What Beyla adds](https://grafana.com/docs/beyla/latest/beyla-and-obi/compare/#what-beyla-adds).

OBI also has Config v2, which uses the OpenTelemetry declarative configuration structure. The OBI documentation recommends Config v2 for new configurations, and OBI Config v1 receives no bug fixes or new features. For details, refer to [Configure OBI](https://opentelemetry.io/docs/zero-code/obi/configure/).

With Config v1, the environment variable prefixes differ. OBI uses the `OTEL_EBPF_` prefix, and Beyla uses the `BEYLA_` prefix. The rest of each environment variable name is the same in both projects.

For settings that Beyla takes from OBI, Beyla accepts both prefixes. For example, Beyla accepts both `BEYLA_METRICS_FEATURES` and `OTEL_EBPF_METRICS_FEATURES` for `metrics.features`.

For settings that Beyla defines itself, Beyla accepts only the `BEYLA_` prefix. For example, Beyla reads its log level from `BEYLA_LOG_LEVEL`, but not from `OTEL_EBPF_LOG_LEVEL`.

OBI and Beyla both support the [OpenTelemetry common environment variables](https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/), for example `OTEL_EXPORTER_OTLP_ENDPOINT` and `OTEL_EXPORTER_OTLP_PROTOCOL`.

## What Beyla adds

Beyla includes the following features for the Grafana ecosystem:

- **Grafana Cloud configuration**: Sends data to the Grafana Cloud OTLP endpoint with the [`grafana.otlp`](https://grafana.com/docs/beyla/latest/configure/export-data/#grafana-cloud-otlp-endpoint) configuration section or the `GRAFANA_CLOUD_*` environment variables.
- **Process metrics**: Reports CPU, memory, disk, and network metrics for the processes that Beyla instruments.
- **Survey mode**: Discovers your services and detects their programming languages, without instrumenting them.
- **Grafana Alloy integration**: Runs as an Alloy component that you can manage with Fleet Management.
- **Tempo inter-cluster service graph support**: In Kubernetes, sends connector spans for connections to and from addresses outside the cluster, so Tempo can build service graph connections between clusters. To turn it on, add `inter_cluster` to `topology.spans`.

If you use OBI, you can get most of these capabilities with other OpenTelemetry projects, though not always completely. For example, the OpenTelemetry Collector reports most of the Beyla process metrics, but not `process.network.io`. To set this up, and to configure OBI for Grafana Cloud, refer to [Use OpenTelemetry eBPF Instrumentation with Grafana](https://grafana.com/docs/beyla/latest/beyla-and-obi/use-obi/).

## Choose Beyla or OBI

Both projects provide the eBPF auto-instrumentation benefits that [Why use Grafana Beyla](https://grafana.com/docs/beyla/latest/introduction/why-beyla/) describes, because they share the same instrumentation code.

The two projects have different release cycles. Beyla usually releases more often than OBI, so some features are available in Beyla before they’re in an OBI release.

Choose Beyla if you want the features in [What Beyla adds](https://grafana.com/docs/beyla/latest/beyla-and-obi/compare/#what-beyla-adds) built in. Choose OBI if you want to use the OpenTelemetry project release directly, and add the capabilities you need with other OpenTelemetry projects.

## Next steps

- [Use OpenTelemetry eBPF Instrumentation with Grafana](https://grafana.com/docs/beyla/latest/beyla-and-obi/use-obi/)
- [Beyla requirements and limitations](https://grafana.com/docs/beyla/latest/requirements-and-security/requirements/)
- [Set up Beyla](https://grafana.com/docs/beyla/latest/setup/)
