About this project

Grafana Pyroscope is an open-source continuous profiling platform for collecting and analyzing application performance data. Its goal is to make resource consumption visible: CPU, memory and I/O behavior can be examined across a whole system and then narrowed to a specific service, function or even a single line of code. Typical uses described in the README are both proactive and reactive. Proactively, teams can reduce resource consumption, improve application performance, or prevent latency issues before they surface. Reactively, the platform is aimed at resolving incidents quickly, with line-level detail for debugging active CPU, memory or I/O bottlenecks. Architecture The project consists of three main parts: - Pyroscope Server: stores and processes profiling data and serves queries. - Clients and instrumentation: profiles reach the server through the Pyroscope language SDKs (push), through Grafana Alloy (pull or push), or over OTLP from OpenTelemetry-compatible sources such as the OpenTelemetry eBPF profiler. - Grafana Profiles Drilldown: a queryless interface for visualizing and analyzing profiling data, formerly known as Explore Profiles. Pyroscope 2.0 makes a new v2 architecture the default. Profiles are written directly to object storage, removing the need for in-memory ingesters and local disks, which the project says simplifies operations and lowers resource usage at scale. Compaction workers merge small segments into larger blocks in the background, while queries fan out across object storage to build flame graphs in Grafana Profiles Drilldown. Existing v1 deployments can opt in via a flag and migrate, and the README links to release notes, an architecture overview and a migration guide. Instrumentation and language support SDK documentation and examples are listed for Go, Java, Python, Ruby, Node.js, .NET and Rust. Beyond SDK-based push, the README points to Grafana Alloy for pull or push collection and to eBPF-based auto-instrumentation via Grafana Alloy, as well as OTLP ingestion from OpenTelemetry-compatible profilers. The project documents a list of supported languages and which profiling types apply to each. Getting started The server can be run locally in several ways: - Docker: docker run -it -p 4040:4040 grafana/pyroscope - Homebrew on macOS/Linux: brew install pyroscope-io/brew/pyroscope, then brew services start pyroscope - Binary: download the archive for your OS and architecture from the latest release, unpack it and run ./pyroscope The server listens on port 4040. The README also references documentation for Kubernetes/Helm deployment, Linux packages, building from source and full server configuration. A hosted live demo is available on Grafana Play, and Profiles Drilldown is described as pre-installed in Grafana Cloud/OSS as the default way to explore profiles. Community and licensing The project is licensed under AGPLv3, has CI and Go Report Card badges, publishes releases and Docker images, and provides Go package references. A contributor guide is included in the repository, and the README credits work that the platform builds on, including Brendan Gregg's Flame Graphs, the rbspy, py-spy and phpspy sampling profilers, flamebearer, speedscope, and contributions that made BPF-based profiling in the Linux kernel possible. Feedback on desired integrations is solicited through GitHub issues and the Grafana Slack.