OpenTelemetry Profiles

Overview

Profiles are emerging as the fourth essential signal of observability, alongside logs, metrics, and traces. They offer unparalleled insights into system and application behavior, often uncovering performance bottlenecks overlooked by other signals.

Profiles provide granular, time-based views of resource consumption and code execution, encompassing:

  • Application-level profiling: Reveals how software functions consume CPU, memory, and other resources, highlighting slow or inefficient code.

  • System-level profiling: Offers a holistic view of the infrastructure, pinpointing issues in operating system calls, kernel operations, and I/O.

This performance picture can lead to:

  • Faster Root Cause Analysis: Quickly identifies the exact cause of performance degradation.
  • Proactive Optimization: Identifies potential issues before user impact.
  • Improved Resource Utilization: Optimizes infrastructure for cost savings and efficiency.
  • Enhanced Developer Productivity: Helps developers validate code performance and prevent regressions.

In essence, while logs, metrics, and traces show “what” and “how much/where” profiles explain “why” and “how efficiently” making them indispensable in modern observability.

Known values

OpenTelemetry semantic conventions are vital for profiles to correlate with other OpenTelemetry signals, enabling unified analysis of traces, metrics, logs, and profiles for a holistic system understanding.

To enhance the compatibility of OpenTelemetry Profiles with existing profiling tools, known values are utilized.

Profile fieldKnown values
original_payload_formatpprof, jfr or linux_perf