Skip to content

Commit 66fcda7

Browse files
Blog post on Elastic's donation of the eBPF profiling agent (#4613)
1 parent 93ab130 commit 66fcda7

File tree

3 files changed

+178
-5
lines changed

3 files changed

+178
-5
lines changed

content/en/_index.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ developer_note:
1212
show_banner: true
1313
limit_banner: 2 # Default to 2, adjust as needed
1414
banners:
15+
- message:
16+
'<i class="fas fa-bullhorn"></i> We are happy to announce that Elastic''s
17+
donation of the [**eBPF profiling agent has been
18+
accepted**](/blog/2024/elastic-contributes-continuous-profiling-agent)!'
19+
to: 2024-07-25
1520
- message:
1621
'<i class="fas fa-bullhorn"></i> Join us for [**OTel Community Day** on
1722
June
1823
25th](https://events.linuxfoundation.org/open-telemetry-community-day/)!'
1924
to: 2024-06-25
20-
- message:
21-
'<i class="fas fa-bullhorn"></i> Help improve OTel and Prometheus
22-
interoperability: [complete our
23-
survey](https://forms.gle/bZAG9f7udoJsjZUG9) by May 31'
24-
to: 2024-05-31
2525
---
2626

2727
<div class="d-none"><a rel="me" href="https://fosstodon.org/@opentelemetry"></a></div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---
2+
title: Elastic Contributes its Continuous Profiling Agent to OpenTelemetry
3+
linkTitle: Elastic Contributes Profiling Agent # Mandatory, make sure that your short title.
4+
date: 2024-06-07
5+
# prettier-ignore
6+
cSpell:ignore: Bahubali Christos Dmitry Filimonov Geisendörfer Halliday Kalkanis Shetti
7+
author:
8+
>- # If you have only one author, then add the single name on this line in quotes.
9+
[Bahubali Shetti](https://github.com/bshetti) (Elastic), [Alexander
10+
Wert](https://github.com/AlexanderWert) (Elastic), [Morgan
11+
McLean](https://github.com/mtwo) (Splunk), [Ryan
12+
Perry](https://github.com/Rperry2174) (Grafana)
13+
issue: https://github.com/open-telemetry/community/issues/1918
14+
sig: Profiling SIG
15+
---
16+
17+
Following significant collaboration between
18+
[Elastic](https://www.elastic.co/observability-labs/blog/elastic-donation-proposal-to-contribute-profiling-agent-to-opentelemetry)
19+
and [OpenTelemetry's profiling community](/blog/2024/profiling/), which included
20+
a thorough review process, we’re excited to announce that the OpenTelemetry
21+
project has accepted
22+
[Elastic's donation of its continuous profiling agent](https://github.com/open-telemetry/community/issues/1918).
23+
24+
This marks a significant milestone in establishing profiling as a core telemetry
25+
signal in OpenTelemetry. Elastic’s [eBPF based](https://ebpf.io/) profiling
26+
agent observes code across different programming languages and runtimes,
27+
third-party libraries, kernel operations, and system resources with low CPU and
28+
memory overhead in production. Both, SREs and developers can now benefit from
29+
these capabilities: quickly identifying performance bottlenecks, maximizing
30+
resource utilization, reducing carbon footprint, and optimizing cloud spend.
31+
32+
Elastic’s decision to contribute the project to OpenTelemetry was made to
33+
accelerate OpenTelemetry’s mission and enable effective observability through
34+
high-quality, portable telemetry. This collaboration also shows the commitment
35+
to vendor neutrality and community-driven development enhancing the overall
36+
profiling and observability ecosystems.
37+
38+
The donation happened through a great and constructive cooperation between
39+
Elastic and the OpenTelemetry community. We look forward to jointly establishing
40+
continuous profiling as an integral part of OpenTelemetry.
41+
42+
With today’s acceptance, Elastic’s continuous profiling agent will be
43+
contributed to OpenTelemetry. This agent will now be jointly supported by both
44+
Elastic’s team as well as a diverse set of official maintainers from different
45+
companies:
46+
47+
- Dmitry Filimonov (Grafana Labs)
48+
- Felix Geisendörfer (Datadog)
49+
- Jonathan Halliday (Red Hat)
50+
- Christos Kalkanis (Elastic)
51+
52+
## What is continuous profiling?
53+
54+
[Continuous profiling](https://www.cncf.io/blog/2022/05/31/what-is-continuous-profiling/)
55+
is a technique used to understand the behavior of a software application by
56+
collecting information about its execution over time. This includes tracking the
57+
duration of function calls, memory usage, CPU usage, and other system resources
58+
along with associated metadata.
59+
60+
## Benefits of Continuous Profiling
61+
62+
Traditional profiling solutions, typically used for one-off, development time
63+
optimizations, can have significant drawbacks limiting adoption in production
64+
environments:
65+
66+
- Significant cost and performance overhead due to code instrumentation
67+
- Disruptive service restarts
68+
- Inability to get visibility into third-party libraries
69+
70+
Continuous profiling, however, runs in the background with minimal overhead,
71+
providing real-time, actionable insights without the need to replicate issues in
72+
separate environments.
73+
74+
This allows SREs, DevOps, and developers to see how code affects performance and
75+
cost, making code and infrastructure improvements easier.
76+
77+
## Contribution of comprehensive profiling abilities
78+
79+
The continuous profiling agent, that Elastic is donating, is
80+
[based on eBPF](https://ebpf.io/) and by that a whole system, always-on solution
81+
that observes code and third-party libraries, kernel operations, and other code
82+
you don't own. It eliminates the need for code instrumentation
83+
(run-time/bytecode), recompilation, or service restarts with low overhead, low
84+
CPU (~1%), and memory usage in production environments.
85+
86+
The donated profiling agent facilitates identifying non-optimal code paths,
87+
uncovering "unknown unknowns", and provides comprehensive visibility into the
88+
runtime behavior of all applications. The continuous profiling agent provides
89+
support for a wide range of runtimes and languages, such as:
90+
91+
- C/C++
92+
- Rust
93+
- Zig
94+
- Go
95+
- Java
96+
- Python
97+
- Ruby
98+
- PHP
99+
- Node.js / V8
100+
- Perl
101+
- .NET
102+
103+
## Benefits to OpenTelemetry
104+
105+
This contribution not only boosts the standardization of continuous profiling
106+
for observability but also accelerates its adoption as a key signal in
107+
OpenTelemetry. Customers benefit from a vendor-agnostic method of collecting
108+
profiling data correlating it with existing signals, like tracing, metrics, and
109+
logs, opening new potential for observability insights and a more efficient
110+
troubleshooting experience.
111+
112+
### User benefits of OpenTelemetry Profiling
113+
114+
OpenTelemetry-based continuous profiling unlocks the following possibilities for
115+
users:
116+
117+
- Continuous profiling data compliments the existing signals (traces, metrics
118+
and logs) by providing detailed, code-level insights on the services'
119+
behavior.
120+
121+
- Seamless correlation with other OpenTelemetry signals such as traces,
122+
increasing fidelity and investigatory depth.
123+
124+
- Estimate environmental impact: Combining profiling data with OpenTelemetry's
125+
resource information (i.e. resource attributes) allows to derive insights into
126+
the services' carbon footprint.
127+
128+
- Through a detailed breakdown of services' resource utilization, profiling data
129+
provides actionable information on performance optimization opportunities.
130+
131+
- Improved vendor neutrality: a vendor-agnostic eBPF-based profiling agent
132+
removes the need to rely on proprietary agents to collect profiling telemetry.
133+
134+
With these benefits, SREs, developers, and DevOps, can now manage the overall
135+
application’s efficiency on the cloud while ensuring their engineering teams
136+
optimize it.
137+
138+
As the next step, the OpenTelemetry profiling SIG, that Elastic is a part of,
139+
will jointly work on integrating the donated agent into OpenTelemetry's
140+
components ecosystem. We look forward to providing a fully integrated and usable
141+
version of the new OpenTelemetry eBPF profiling agent to the users, soon.

static/refcache.json

+32
Original file line numberDiff line numberDiff line change
@@ -1959,6 +1959,10 @@
19591959
"StatusCode": 200,
19601960
"LastSeen": "2024-06-04T17:29:51.894512776+02:00"
19611961
},
1962+
"https://energy.mit.edu/news/energy-efficient-computing/": {
1963+
"StatusCode": 200,
1964+
"LastSeen": "2024-06-06T19:18:50.285562+02:00"
1965+
},
19621966
"https://equalitymi.org/": {
19631967
"StatusCode": 200,
19641968
"LastSeen": "2024-01-18T19:02:20.222589-05:00"
@@ -2171,6 +2175,10 @@
21712175
"StatusCode": 200,
21722176
"LastSeen": "2024-01-30T16:14:58.646823-05:00"
21732177
},
2178+
"https://github.com/AlexanderWert": {
2179+
"StatusCode": 200,
2180+
"LastSeen": "2024-06-06T19:18:46.235285+02:00"
2181+
},
21742182
"https://github.com/Aneurysm9": {
21752183
"StatusCode": 200,
21762184
"LastSeen": "2024-01-18T20:06:35.565079-05:00"
@@ -2287,6 +2295,10 @@
22872295
"StatusCode": 200,
22882296
"LastSeen": "2024-01-18T19:12:45.986279-05:00"
22892297
},
2298+
"https://github.com/Rperry2174": {
2299+
"StatusCode": 200,
2300+
"LastSeen": "2024-06-06T19:18:46.659794+02:00"
2301+
},
22902302
"https://github.com/Samudraneel24": {
22912303
"StatusCode": 200,
22922304
"LastSeen": "2024-01-30T05:18:13.282737-05:00"
@@ -2451,6 +2463,10 @@
24512463
"StatusCode": 200,
24522464
"LastSeen": "2024-01-30T15:25:06.510641-05:00"
24532465
},
2466+
"https://github.com/bshetti": {
2467+
"StatusCode": 200,
2468+
"LastSeen": "2024-06-06T19:18:45.889432+02:00"
2469+
},
24542470
"https://github.com/bufbuild/connect-opentelemetry-go": {
24552471
"StatusCode": 200,
24562472
"LastSeen": "2024-01-18T19:11:18.472599-05:00"
@@ -6183,10 +6199,18 @@
61836199
"StatusCode": 206,
61846200
"LastSeen": "2024-05-15T19:23:44.426379755+03:00"
61856201
},
6202+
"https://opentelemetry.io/blog/2024/profiling/": {
6203+
"StatusCode": 206,
6204+
"LastSeen": "2024-06-06T19:18:48.714842+02:00"
6205+
},
61866206
"https://opentelemetry.io/blog/2024/scaling-collectors/": {
61876207
"StatusCode": 206,
61886208
"LastSeen": "2024-05-06T07:53:28.903161-07:00"
61896209
},
6210+
"https://opentelemetry.io/community/mission/": {
6211+
"StatusCode": 206,
6212+
"LastSeen": "2024-06-06T19:18:50.53437+02:00"
6213+
},
61906214
"https://opentelemetry.io/docs/collector": {
61916215
"StatusCode": 206,
61926216
"LastSeen": "2024-02-23T22:55:03.656226-05:00"
@@ -8611,6 +8635,10 @@
86118635
"StatusCode": 206,
86128636
"LastSeen": "2024-01-18T20:05:14.383107-05:00"
86138637
},
8638+
"https://www.cncf.io/blog/2022/05/31/what-is-continuous-profiling/": {
8639+
"StatusCode": 206,
8640+
"LastSeen": "2024-06-06T19:18:49.123716+02:00"
8641+
},
86148642
"https://www.cncf.io/blog/2023/01/11/a-look-at-the-2022-velocity-of-cncf-linux-foundation-and-top-30-open-source-projects/": {
86158643
"StatusCode": 206,
86168644
"LastSeen": "2024-01-30T05:18:24.717687-05:00"
@@ -8691,6 +8719,10 @@
86918719
"StatusCode": 206,
86928720
"LastSeen": "2024-01-30T06:06:13.672817-05:00"
86938721
},
8722+
"https://www.elastic.co/observability-labs/blog/elastic-donation-proposal-to-contribute-profiling-agent-to-opentelemetry": {
8723+
"StatusCode": 206,
8724+
"LastSeen": "2024-06-06T19:18:47.94157+02:00"
8725+
},
86948726
"https://www.envoyproxy.io": {
86958727
"StatusCode": 206,
86968728
"LastSeen": "2024-01-18T19:56:01.373375-05:00"

0 commit comments

Comments
 (0)