Powered by eBPF·Always-on CPU profiles for Kubernetes workloads

Kubernetes Continuous Profiling

without the overhead.

Keep production profiling on all the time. Metoro samples at the kernel level, attributes stacks to pods and services, and shows which functions changed after a deploy, traffic shift, or noisy-neighbor event.

Get started free
profiling · flamegraph
Trusted by hundreds of the best at
Nuco Cloud logo
Kong logo
Aposyro logo
Porter
Odos logo
Asteroid.ai logo
Fern Labs logo
Remy Security
Mozilla logo
Kong logo
Koton logo
Porter
Rappi logo
Asteroid.ai logo
Infotrax logo
Remy Security
DocioHealth
Kong logo
Freedx logo
Porter
Capabilities

Always on profiling with super low overhead.

One Helm install gives you low-overhead CPU profiles across connected clusters, tied to the services, pods, deploys, traces, and logs you already use during an investigation.

Flame graphs

Find the expensive function, not just the expensive pod.

Open a service profile and see where CPU time is actually going across pods, containers, and time windows. Drill into any frame to move from a spike to the code path behind it.

  • Interactive flame graphs aggregated by service, pod, or container
  • Filter by cluster, namespace, deployment, or Kubernetes label
  • Investigate past incidents across any retained time window
See it in the live demo
profiling · flamegraph
profiling · AI analysis
AI analysis

Spot profile changes after deploys.

Metoro’s AI inspects profile shape over time and points out new hot paths, regressions, and optimization candidates so you do not have to compare flame graphs by eye.

  • Bottleneck detection across services and deploy windows
  • Profile comparisons tied to release and incident timelines
  • Suggestions linked to the exact stack frame that changed
See it in the live demo
Multi-language

Profile code you own and containers you do not.

Native stack frames for Go, Python, C++, C, Rust, Node.js, Java and more - captured by the kernel-side profiler, with no language agent to install. Platform teams can inspect system-level CPU use even for third-party images.

  • Symbolized frames for Go, Python, C++, C, Rust, Node.js, Java and more
  • Visibility into third-party containers you do not own or build
  • No code changes, language agents, restarts, or rebuilds
See it in the live demo
languages · supported runtimes
Go
Go
Python
Python
C++
C++
C
C
Rust
Rust
Node.js
Node.js
Java
Java
+
and more
Always-on at the kernel

Leave profiling on in production.

A single eBPF sampling profiler runs on every node at 97Hz per core, then attributes samples to the right container, pod, and service. You get profiles for the incident that already happened, not just the one you manage to reproduce.

  • 97Hz sampling on every CPU core, all the time
  • Less than 0.5% CPU overhead per node
  • Profiles connected directly to APM traces, logs, and pod state
See it in the live demo
What changes after install

CPU investigations start at the function, not the node.

97Hz
Sampling rate per CPU core
kernel-side eBPF profiler
<0.5%
Typical CPU overhead per node
safe to keep on in production
7+
Supported language runtimes
Go, Python, C++, C, Rust, Node.js, Java
0
Application changes
no SDKs, restarts, or rebuilds
Included with APM

Always-on profiling.

Cost comparison

Example monthly cost - APM + CPU profiling

Estimate by hosts, containers, and profile volume

Datadog
$960/month
Grafana Cloud
$725/month
Metoro
$400/month

* Approximate cost. Precise costs depend on the specific use case and any discounts.

** Estimates based on public pricing pages. Vendor pricing can change over time.

Customer feedback

What teams are saying.

FAQ

Frequently Asked Questions

Answers for teams evaluating continuous CPU profiling in Kubernetes.

What is a CPU profile?
A CPU profile is a set of sampled stack traces that shows where a program spent CPU time. Metoro aggregates those samples into flame graphs so you can move from a CPU spike to the functions and frames behind it.
How does Metoro collect profiles without code changes?
Metoro runs an eBPF sampling profiler on each node. It samples every CPU core at 97Hz, captures the stack trace currently running on that core, and attributes the sample to the right container, pod, and service.
Which programming languages are supported?
Metoro supports Go, Python, C++, C, Rust, Node.js, Java and more. For other runtimes, Metoro still captures host-level stack frames so you can inspect where CPU time is spent in the runtime and system layer.
Is continuous profiling safe in production?
Yes. The sampling profiler typically uses less than 0.5% CPU per node, so it is designed to stay on continuously in production. That means profiles are available for incidents that already happened, not only the ones you can reproduce later.
How do profiles connect to the rest of Metoro?
Open any service in Metoro and use the Profiling tab. Profiles are scoped to the selected time window and sit next to traces, logs, metrics, pod state, and deploy context, so you can compare CPU behavior with the rest of the incident timeline.
Can I use profiling for containers I do not build?
Yes. Because Metoro collects profiles from the node with eBPF, it can profile third-party containers and vendor workloads without SDKs, rebuilds, or application instrumentation.

Keep CPU profiling on
before the next incident.

Install Metoro with Helm and get always-on CPU profiles tied to services, pods, deploys, traces, and logs without changing application code.

Free trialNo credit card< 1 min setup