|
| 1 | +--- |
| 2 | +title: OpenTelemetry eBPF Instrumentation Marks the First Release |
| 3 | +linkTitle: OBI First Release |
| 4 | +date: 2025-11-03 |
| 5 | +author: >- |
| 6 | + [Nikola Grcevski](https://github.com/grcevski) (Grafana Labs), [Tyler |
| 7 | + Yahn](https://github.com/MrAlias) (Splunk) |
| 8 | +issue: 8295 |
| 9 | +sig: eBPF Instrumentation |
| 10 | +cSpell:ignore: Beyla Coralogix Grcevski Odigos uninstrumented Yahn |
| 11 | +--- |
| 12 | + |
| 13 | +Following a significant collaboration between Grafana Labs, Splunk, Coralogix, |
| 14 | +Odigos and many other community members, we are thrilled to announce the first |
| 15 | +alpha release of [OpenTelemetry eBPF |
| 16 | +Instrumentation][otel-ebpf-instrumentation], or OBI for short. |
| 17 | + |
| 18 | +This event marks a significant milestone after the project, originally Grafana |
| 19 | +Beyla, was donated earlier this year by Grafana Labs. The development of eBPF |
| 20 | +instrumentation has significantly sped up after the project became managed under |
| 21 | +the OpenTelemetry umbrella. Many new protocols have been added, quality has |
| 22 | +improved - especially when deploying at scale, and tests are running 10 times |
| 23 | +faster. It’s a true testament to the value of the OpenTelemetry community. |
| 24 | + |
| 25 | +## So what is OpenTelemetry eBPF Instrumentation and why should you care? |
| 26 | + |
| 27 | +Unlike many other OpenTelemetry instrumentation approaches, OpenTelemetry eBPF |
| 28 | +instrumentation (OBI) runs out-of-process and instruments at the protocol level, |
| 29 | +rather than at the library level. It leverages the deep kernel integration, |
| 30 | +process isolation, runtime safety, and performance benefits of the eBPF |
| 31 | +technology. |
| 32 | + |
| 33 | +Since OBI instruments at the protocol level, it means that you can essentially |
| 34 | +instrument all applications (all programming languages, all libraries) with zero |
| 35 | +effort, with a single command and you’ll always get a consistent picture. Let’s |
| 36 | +breakdown this previous statement a bit into what it actually means for the end |
| 37 | +user: |
| 38 | + |
| 39 | +1. No restarts, no code changes, no application configuration changes! OBI alone |
| 40 | + provides fully automatic capture of metrics and traces. The beauty of eBPF is |
| 41 | + that you can drop something into a running environment and be certain it will |
| 42 | + not destabilize your system/cluster/application. |
| 43 | +2. No new application dependencies - no new security vulnerabilities. Since OBI |
| 44 | + runs out-of-process, we are not adding anything to your application. You |
| 45 | + don’t need to upgrade or add OpenTelemetry SDK dependencies, or patch your |
| 46 | + application if the OpenTelemetry SDK dependency that you have added has a |
| 47 | + vulnerability. You can separately secure the access to OBI on your system, |
| 48 | + and that won’t impact anything else you have installed. |
| 49 | +3. Your applications never get slower by adding telemetry. Since your |
| 50 | + application never has to add anything or do any work to export telemetry, |
| 51 | + your application performance is not impacted by the telemetry capture. OBI |
| 52 | + does most of the work at kernel level and it’s heavily optimized for |
| 53 | + performance. It has minimal CPU and memory footprint even at very high |
| 54 | + request rates. |
| 55 | +4. Your telemetry is always consistent across all programming languages and |
| 56 | + libraries. OBI will keep your telemetry at the latest stable OpenTelemetry |
| 57 | + spec, across all of your services, without you having to wrangle compliance. |
| 58 | +5. Wide range of supported protocol instrumentations, HTTP/HTTPS, HTTP/2, gRPC, |
| 59 | + SQL, Redis, MongoDB, Kafka, GraphQL, Elasticsearch/OpenSearch, AWS S3. |
| 60 | + Automatic trace context propagation for all programming languages. |
| 61 | + |
| 62 | +## Should I just use OpenTelemetry eBPF Instrumentation for everything? |
| 63 | + |
| 64 | +Yes and … |
| 65 | + |
| 66 | +OpenTelemetry eBPF Instrumentation (OBI) is good for certain things, but becomes |
| 67 | +even better when combined with other OpenTelemetry technology. Let’s look at |
| 68 | +what this means in practice. |
| 69 | + |
| 70 | +OpenTelemetry eBPF Instrumentation is a great tool to get started with |
| 71 | +OpenTelemetry. It can quickly get you basic signals like RED (Request Error |
| 72 | +Duration) metrics, service graphs, and traces for certain kinds of applications. |
| 73 | +However, since the data capture is done at the kernel level, certain levels of |
| 74 | +detail, which can be provided by other types of OpenTelemetry instrumentation, |
| 75 | +will not be there. Let’s look into detail what this means: |
| 76 | + |
| 77 | +1. Give OBI a shot if you have no telemetry at all, or partial telemetry, it’s |
| 78 | + an easy way to get everything auto-instrumented (especially compiled |
| 79 | + binaries). OBI detects that an application is instrumented with another |
| 80 | + OpenTelemetry SDK and doesn’t duplicate signals. So it’s easy and safe to |
| 81 | + drop into a mix of instrumented and uninstrumented applications. |
| 82 | +2. Give OBI a shot if your application is using a library without OpenTelemetry |
| 83 | + support, for example a library that’s older than officially supported |
| 84 | + libraries, or a library that nobody has provided instrumentation for. |
| 85 | +3. Keep services you have successfully instrumented with the OpenTelemetry SDKs |
| 86 | + or agents. There’s rarely a reason to migrate off other types of |
| 87 | + OpenTelemetry instrumentations, unless you are experiencing significant |
| 88 | + performance or cost issues. In which case, OBI may be able to help. |
| 89 | +4. While OBI is an excellent tool for gathering metrics and service graphs, it |
| 90 | + doesn’t have good distributed tracing support for certain languages and |
| 91 | + technologies. For example, it currently doesn’t handle distributed tracing |
| 92 | + for reactive programming frameworks, Java virtual threads or complex thread |
| 93 | + pools. In general, OBI distributes traces work well for Go (HTTP and gRPC), |
| 94 | + Node.js (HTTP), Python (HTTP), NGINX (HTTP), PHP (HTTP/FPM), while for other |
| 95 | + programming languages support will vary a lot based on how your application |
| 96 | + internally manages threads and connections. We are looking for help with |
| 97 | + contributions to extend the distributed tracing support more broadly. The |
| 98 | + distributed tracing limitations are documented in the [Distributed Traces |
| 99 | + with OBI][distributed-traces] section of our docs. |
| 100 | + |
| 101 | +## To summarize |
| 102 | + |
| 103 | +We believe that observability should be a built-in capability of modern |
| 104 | +infrastructure, not a bolt-on cost center. OpenTelemetry eBPF Instrumentation |
| 105 | +lets you add essential telemetry capture to your environment with a single |
| 106 | +command line. There should be no more excuses why you are not using |
| 107 | +OpenTelemetry. No effort, no downtime, no code or configuration changes, every |
| 108 | +reason to give it a shot. |
| 109 | + |
| 110 | +## Getting started with OpenTelemetry eBPF Instrumentation |
| 111 | + |
| 112 | +Getting started with OpenTelemetry eBPF Instrumentation (OBI) is |
| 113 | +straightforward\! You can deploy it as standalone, as a Docker image or as a |
| 114 | +Kubernetes Daemonset (or pod sidecar). For detailed instructions on |
| 115 | +installation, configuration, and running your application with OBI, check out |
| 116 | +the [Getting Started guide][getting-started]. |
| 117 | + |
| 118 | +For complete examples on how to install OBI in docker environments you can check |
| 119 | +out our many [integration test examples][integration-examples], combining |
| 120 | +multiple programming languages, database backends and cloud services. There are |
| 121 | +also a number of Kubernetes examples in our Kubernetes [test |
| 122 | +repository][test-repository]. |
| 123 | + |
| 124 | +## Next steps |
| 125 | + |
| 126 | +If you want to get in touch with us, suggest a feature we should be working on, |
| 127 | +or follow our work and be up to date with our releases, you can always find us |
| 128 | +on GitHub at the [OpenTelemetry eBPF Instrumentation repository][ebpf-repo]. We |
| 129 | +also run a regular and very active [Special Interest Group (SIG) Community |
| 130 | +Call][sigs] weekly, where you can join in and become part of our community. If |
| 131 | +you are unable to attend our community call, you can also easily find us |
| 132 | +asynchronously on the CNCF Community Slack channel |
| 133 | +[\#otel-ebpf-instrumentation][slack-ebpf]. |
| 134 | + |
| 135 | +## Acknowledgments |
| 136 | + |
| 137 | +This alpha release is the result of countless hours of work by contributors from |
| 138 | +around the world. Thank you to everyone who has contributed code, documentation, |
| 139 | +feedback, and enthusiasm to make this milestone possible. |
| 140 | + |
| 141 | +[otel-ebpf-instrumentation]: |
| 142 | + https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation |
| 143 | +[distributed-traces]: /docs/zero-code/obi/distributed-traces/ |
| 144 | +[getting-started]: /docs/zero-code/obi/setup/ |
| 145 | +[integration-examples]: |
| 146 | + https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/main/internal/test/integration |
| 147 | +[test-repository]: |
| 148 | + https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/main/internal/test/integration/k8s/manifests |
| 149 | +[ebpf-repo]: |
| 150 | + https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation |
| 151 | +[sigs]: |
| 152 | + https://github.com/open-telemetry/community?tab=readme-ov-file#sig-ebpf-instrumentation |
| 153 | +[slack-ebpf]: https://cloud-native.slack.com/archives/C08P9L4FPKJ |
0 commit comments