Loading

Configure profiles collection

The Elastic Distribution of OpenTelemetry (EDOT) Collector includes a profiling receiver, which offers an eBPF-based, system-wide profiler.

To activate and configure profiling and send profiles to Elastic Cloud or Elasticsearch, follow these instructions.

Important

OpenTelemetry profiling is still under active development. Refer to The State of Profiling blog post for more information.

Follow these steps to turn on profiles collection through the EDOT Collector.

  1. Activate profiling in the Collector

    To activate profiling in the EDOT Collector, start it using the additional argument --feature-gates=service.profilesSupport.

    For example:

    sudo ./otelcol --config otel.yml --feature-gates=service.profilesSupport
    		

The profiling receiver is only available on Linux. Running it on an operating system other than Linux results in an error.

The supported Linux kernel versions are either 5.4 and later for x86_64 or 5.5 and later for ARM64.

The profiling receiver handles native runtimes, like C, C++, Go and Rust, as well as various interpreters.

The minimum supported versions of each interpreter are:

  • JVM/JDK: 7
  • Python: 3.6
  • V8: 8.1.0
  • Perl: 5.28
  • PHP: 7.3
  • Ruby: 2.5
  • .Net: 6
  • Erlang/OTP 27.2.4

You can configure the components to generate and report metrics exclusively from profile information. This method contributes to a reduction in ingest traffic and storage costs.

The following example generates profiling metrics by frame, frame type, and classification:

connectors:
  profilingmetrics:
    by_frame: true
    by_frametype: true
    by_classification: true

receivers:
  profiling:
    SamplesPerSecond: 19

service:
  pipelines:
    profiles:
      receivers: [ profiling ]
      exporters: [ profilingmetrics ]
    metrics:
      receivers: [ profilingmetrics ]
      exporters: [ elasticsearch ]
		
connectors:
  profilingmetrics:

receivers:
  profiling:

service:
  pipelines:
    profiles:
      receivers: [ profiling ]
      exporters: [ profilingmetrics ]
    metrics:
      receivers: [ profilingmetrics ]
      exporters: [ elasticsearch ]
		

In Kubernetes, we suggest deploying the EDOT Collector with a profiling receiver as a DaemonSet. This ensures comprehensive, node-level profiling across the entire cluster, providing consistent data collection, resilience, scalability, and simplified management. This approach is recommended for optimal performance and full observability.