RousselTMLEARNING

Observabilité · Courses

Grafana Pyroscope: from discovery to expertise

A complete course on continuous profiling with Grafana Pyroscope: profile types, flame graphs, SDKs, Alloy and eBPF, correlation with traces and Kubernetes deployment.

8 chapters13 lessonsEN
At your pace, through practice.

By the end of this course you will be able to

  • Explain continuous profiling and read a flame graph
  • Instrument applications with the SDKs, Alloy and eBPF
  • Diagnose CPU, memory and contention issues with Pyroscope
  • Link traces and profiles with Tempo
  • Deploy Pyroscope on Kubernetes

🎯 Level : Intermediate👥 Who it is for : Developers, SREs and DevOps engineers who want to understand the CPU and memory consumption of their applications in production

LEARNING PATH

Course curriculum

0Course overview1 lesson
1Introduction to continuous profiling1 lesson

The fourth signal, profile types and flame graphs.

  1. Continuous profilingArticle · ⏱ 4 min
2Architecture and deployment2 lessons
3Instrumentation3 lessons
4Profile analysis2 lessons
5Correlation with traces1 lesson
6Kubernetes and operations2 lessons
7Best practices1 lesson

Recommended practices for running the product in production.

  1. Pyroscope best practicesArticle · ⏱ 4 min

LEARN BY DOING

Use cases & applications

Reduce the cloud bill

Find the functions that consume the most CPU across the whole fleet.

Fix a memory leak

Identify what stays in memory with inuse profiles.

Validate an optimisation

Compare two versions with a diff flame graph.

Understand a slow request

Jump from a trace to the exact profile of the span.

Recommended prerequisites

What next?

Frequently asked questions

What is continuous profiling?

It is the permanent sampling, in production, of process call stacks, to find out which functions consume CPU, memory or wait time.

What is the overhead of profiling?

Typically 1 to 3% CPU, thanks to sampling. eBPF is even lighter.

Do I need to change the code?

No with eBPF (CPU profiles); yes with the SDKs, which add business labels, memory profiles and links to traces.

Which languages are supported?

Go, Java, Python, Ruby, Node.js, .NET and Rust via the SDKs; all compiled languages and several interpreted ones via eBPF.