Skip to content

Commit 59d702f

Browse files
florianlsvrnmtigrannajaryanreyangchristos68k
authored
[spec/profiles] initial commit (#4685)
## Changes Start to document OTel Profiles. Friendly ping @open-telemetry/profiling-approvers. For non-trivial changes, follow the [change proposal process](https://github.com/open-telemetry/opentelemetry-specification/blob/main/CONTRIBUTING.md#proposing-a-change). * [x] Related issues open-telemetry/opentelemetry.io#7874 * [ ] Related [OTEP(s)](https://github.com/open-telemetry/oteps) # * [ ] Links to the prototypes (when adding or changing features) * [x] [`CHANGELOG.md`](https://github.com/open-telemetry/opentelemetry-specification/blob/main/CHANGELOG.md) file updated for non-trivial changes * [ ] [Spec compliance matrix](https://github.com/open-telemetry/opentelemetry-specification/blob/main/spec-compliance-matrix/template.yaml) updated if necessary --------- Signed-off-by: Florian Lehner <[email protected]> Co-authored-by: Severin Neumann <[email protected]> Co-authored-by: Tigran Najaryan <[email protected]> Co-authored-by: Reiley Yang <[email protected]> Co-authored-by: Christos Kalkanis <[email protected]>
1 parent 56967ef commit 59d702f

File tree

4 files changed

+97
-2
lines changed

4 files changed

+97
-2
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ release.
2222

2323
### Profiles
2424

25+
- Document the profiles signal.
26+
([#4685](https://github.com/open-telemetry/opentelemetry-specification/pull/4685))
27+
2528
### Resource
2629

2730
### Entities

specification/glossary.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ Some other fundamental terms are documented in the [overview document](overview.
3939
* [Structured Logs](#structured-logs)
4040
* [Flat File Logs](#flat-file-logs)
4141
* [Log Appender / Bridge](#log-appender--bridge)
42+
- [Profiles](#profiles)
43+
* [Profile](#profile)
44+
* [Profiling](#profiling)
4245

4346
<!-- tocstop -->
4447

@@ -68,7 +71,7 @@ The maintainer of an OpenTelemetry SDK Plugin, written against OpenTelemetry SDK
6871
### Signals
6972

7073
OpenTelemetry is structured around signals, or categories of telemetry.
71-
Metrics, logs, traces, and baggage are examples of signals.
74+
Metrics, logs, traces, profiles, and baggage are examples of signals.
7275
Each signal represents a coherent, stand-alone set of functionality.
7376
Each signal follows a separate lifecycle, defining its current stability level.
7477

@@ -228,3 +231,17 @@ library into OpenTelemetry using the [Log API](./logs/api.md). The
228231
terms "log bridge" and "log appender" are used interchangeably, reflecting that
229232
these components bridge data into OpenTelemetry, but are often called appenders
230233
in the logging domain.
234+
235+
## Profiles
236+
237+
Profiles describes the OpenTelemetry signal.
238+
239+
### Profile
240+
241+
In the context of the profiles signal, profile holds one or more samples (stacktraces with associated metadata) of
242+
an OpenTelemetry instrumentation scope.
243+
244+
### Profiling
245+
246+
Profiling describes the process of collecting data that will be reported with
247+
the profiles signal.

specification/profiles/README.md

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,60 @@ path_base_for_github_subdir:
44
to: profiles/README.md
55
--->
66

7-
# Profiles
7+
# OpenTelemetry Profiles
8+
9+
<details>
10+
<summary>Table of Contents</summary>
11+
12+
<!-- toc -->
13+
14+
- [Overview](#overview)
15+
- [Known values](#known-values)
16+
17+
<!-- tocstop -->
18+
19+
</details>
20+
21+
## Overview
22+
23+
Profiles are emerging as the fourth essential signal of observability, alongside
24+
logs, metrics, and traces. They offer unparalleled insights into system and
25+
application behavior, often uncovering performance bottlenecks overlooked by
26+
other signals.
27+
28+
Profiles provide granular, time-based views of resource consumption and
29+
code execution, encompassing:
30+
31+
* **Application-level profiling**: Reveals how software functions consume CPU,
32+
memory, and other resources, highlighting slow or inefficient code.
33+
34+
* **System-level profiling**: Offers a holistic view of the infrastructure,
35+
pinpointing issues in operating system calls, kernel operations, and I/O.
36+
37+
This performance picture can lead to:
38+
39+
* **Faster Root Cause Analysis**: Quickly identifies the exact cause of
40+
performance degradation.
41+
* **Proactive Optimization**: Identifies potential issues before user impact.
42+
* **Improved Resource Utilization**: Optimizes infrastructure for cost savings
43+
and efficiency.
44+
* **Enhanced Developer Productivity**: Helps developers validate code performance
45+
and prevent regressions.
46+
47+
In essence, while logs, metrics, and traces show "what" and "how much/where"
48+
profiles explain "why" and "how efficiently" making them indispensable in modern
49+
observability.
50+
51+
## Known values
52+
53+
[OpenTelemetry semantic conventions](https://opentelemetry.io/docs/specs/semconv/)
54+
are vital for profiles to correlate with other OpenTelemetry signals, enabling
55+
unified analysis of traces, metrics, logs, and profiles for a holistic
56+
system understanding.
57+
58+
To enhance the compatibility of OpenTelemetry Profiles with existing profiling
59+
tools, known values are utilized.
60+
61+
| Profile field | Known values |
62+
| -------------- | ------------ |
63+
| original_payload_format | [pprof](https://github.com/google/pprof/tree/main/proto), [jfr](https://en.wikipedia.org/wiki/JDK_Flight_Recorder) or [linux_perf](https://perfwiki.github.io/) |

specification/profiles/pprof.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Pprof
2+
3+
**Status**: [Development](../document-status.md)
4+
5+
<!-- toc -->
6+
7+
- [Compatibility](#compatibility)
8+
9+
<!-- tocstop -->
10+
11+
## Compatibility
12+
13+
Original [pprof](https://github.com/google/pprof/tree/main/proto) is forward
14+
compatible with OpenTelemetry Profiles in a sense that it can be transformed into
15+
OpenTelemetry Profiles and again into [pprof](https://github.com/google/pprof/tree/main/proto)
16+
without data loss.
17+
18+
For this compatibility OpenTelemetry also provides a `pprof` namespace in
19+
Semantic Conventions.

0 commit comments

Comments
 (0)