gitmyhub

pyroscope

Go ★ 12k updated 1d ago

Continuous Profiling Platform. Debug performance issues down to a single line of code

Grafana Pyroscope continuously watches running applications and records where they spend time and memory, helping engineering teams find slow code or memory leaks through a visual interface without writing queries.

GoDockerKubernetesGrafanaeBPFHelmsetup: moderatecomplexity 4/5

Grafana Pyroscope is a tool for continuous profiling, which means it watches running applications and collects data about what they are spending their time and memory on. This kind of monitoring helps engineering teams find performance problems: for example, why a service is using too much CPU, why memory keeps growing, or why certain requests are slow.

Pyroscope works by pairing a server with small client-side agents or SDKs that run inside your application. The agents collect profiling data and send it to the Pyroscope server, which stores and processes it. You can then explore the results through a visual interface called Explore Profiles, which is part of the Grafana observability platform. The interface does not require writing queries; you browse through services and time ranges and drill into specific functions to see where time is being spent.

The tool supports a wide range of programming languages. You can attach an SDK or agent to applications written in Go, Java, Python, Ruby, Node.js, .NET, Rust, and others. It can also be configured to pull profiling data automatically via Grafana Alloy, without modifying application code.

For deployment, Pyroscope can be run locally via Homebrew or Docker in a single command. It is also available as a managed service through Grafana Cloud, where no server setup is required. For teams running their own infrastructure, deployment on Kubernetes is documented separately.

The typical use cases are proactive ones, such as reducing resource consumption before a problem occurs, and reactive ones, such as diagnosing an active incident with line-level detail about what code is running.

Where it fits