Skip to content

Commit fde14ca

Browse files
grcevskiotelbot[bot]maryliagtiffany76
authored
New blog post about OpenTelemetry eBPF Instrumentation first release (#8296)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com> Co-authored-by: Marylia Gutierrez <maryliag@gmail.com> Co-authored-by: Tiffany Hrabusa <30397949+tiffany76@users.noreply.github.com>
1 parent 66d1d33 commit fde14ca

File tree

2 files changed

+169
-0
lines changed

2 files changed

+169
-0
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
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

static/refcache.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,10 @@
735735
"StatusCode": 200,
736736
"LastSeen": "2025-10-31T09:45:37.338190465Z"
737737
},
738+
"https://cloud-native.slack.com/archives/C08P9L4FPKJ": {
739+
"StatusCode": 200,
740+
"LastSeen": "2025-10-31T00:47:55.354605847Z"
741+
},
738742
"https://cloud-native.slack.com/archives/C091NUGP5KN": {
739743
"StatusCode": 200,
740744
"LastSeen": "2025-10-25T16:06:18.629998094Z"
@@ -6591,6 +6595,10 @@
65916595
"StatusCode": 206,
65926596
"LastSeen": "2025-10-25T16:08:20.631853919Z"
65936597
},
6598+
"https://github.com/open-telemetry/community?tab=readme-ov-file#sig-ebpf-instrumentation": {
6599+
"StatusCode": 206,
6600+
"LastSeen": "2025-10-31T00:47:51.831126749Z"
6601+
},
65946602
"https://github.com/open-telemetry/community?tab=readme-ov-file#special-interest-groups": {
65956603
"StatusCode": 206,
65966604
"LastSeen": "2025-10-31T09:44:41.512432381Z"
@@ -8963,6 +8971,14 @@
89638971
"StatusCode": 206,
89648972
"LastSeen": "2025-10-25T16:04:16.13089519Z"
89658973
},
8974+
"https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/main/internal/test/integration": {
8975+
"StatusCode": 206,
8976+
"LastSeen": "2025-10-31T00:47:44.841549347Z"
8977+
},
8978+
"https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/tree/main/internal/test/integration/k8s/manifests": {
8979+
"StatusCode": 206,
8980+
"LastSeen": "2025-10-31T00:47:48.190780973Z"
8981+
},
89668982
"https://github.com/open-telemetry/opentelemetry-ebpf-profiler": {
89678983
"StatusCode": 206,
89688984
"LastSeen": "2025-10-29T09:45:31.716227623Z"

0 commit comments

Comments
 (0)