Docs » Introduction to AlwaysOn Profiling for Splunk APM

Introduction to AlwaysOn Profiling for Splunk APM đź”—

AlwaysOn Profiling continuously collects stack traces so that you can discover which lines in your code are slowing down or crashing your systems as a way to reduce mean time to resolution (MTTR). As part of Splunk APM, AlwaysOn Profiling provides context to spans produced by instrumented applications.

After you get profiling data into Splunk Observability Cloud, you can explore stack traces directly from APM and visualize the performance of each component using the flame graph. By identifying bottlenecks and inefficiencies visually, AlwaysOn Profiling can help you understand the behavior of your application’s code.

What you can do with AlwaysOn Profiling¶

Here are some of the things you can do with AlwaysOn Profiling for Splunk APM:

  • Perform continuous profiling of your applications. The profiler is always on once you activate it.

  • Collect code performance context and link it to trace data.

  • Explore memory usage and garbage collection of your application.

  • Analyze code bottlenecks that impact service performance.

  • Identify inefficiencies that increase the need for scaling up cloud resources.

Here are some of the typical issues that AlwaysOn Profiling can identify:

  • Slow or inefficient database queries

  • Thread locks

  • Memory leaks

  • Unusual memory consumption

  • Thread pool starvation

  • File system bottlenecks

  • Slow calls to external services

For sample scenarios, see Scenarios for monitoring applications and services using Splunk AlwaysOn Profiling.

Memory profiling¶

Memory profiling adds memory allocation data to stack traces and exposes memory metrics, so that you can discover leaks and unusual consumption patterns in your instrumented services and applications. See Scenario: Sasha analyzes memory usage using AlwaysOn Profiling.

After you get profiling data into Splunk Observability Cloud, you can visualize the memory allocation behavior of each component using the flame graph. See Understand and use the flame graph.

Memory profiling also exposes memory metrics for your application, which you can use to build charts and dashboards. See Memory profiling metrics.

Supported languages¶

The following programming languages have instrumentation available:

Language

Available instrumentation

Documentation

Java

Splunk Distribution of OpenTelemetry Java version 1.14.2 or higher

OpenJDK versions 15.0 to 17.0.8 are not supported for memory profiling. See https://bugs.openjdk.org/browse/JDK-8309862 in the JDK bug system for more information.

Node.js

Splunk Distribution of OpenTelemetry JS version 2.0 or higher

.NET (OpenTelemetry)

Splunk Distribution of OpenTelemetry .NET 1.3.0 or higher

.NET versions 6.0 and higher are supported in AlwaysOn Profiling. .NET Framework is not supported.

.NET (SignalFx)

SignalFx Instrumentation for .NET version 1.0.0 or higher

.NET versions 6.0 and higher are supported in AlwaysOn Profiling. .NET Framework is not supported.

Python (in beta)

Splunk Distribution of OpenTelemetry Python version 1.15 or higher

Only CPU profiling is supported.

Get AlwaysOn Profiling data into Splunk APM¶

To get started, instrument your application or service for Splunk APM and activate AlwaysOn Profiling.

See Get data into Splunk APM AlwaysOn Profiling for instructions.