# grafana/pyroscope

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/grafana-pyroscope).**

11,495 stars · 767 forks · Go · AGPL-3.0

## Links

- GitHub: https://github.com/grafana/pyroscope
- Homepage: https://grafana.com/oss/pyroscope/
- awesome-repositories: https://awesome-repositories.com/repository/grafana-pyroscope.md

## Topics

`continuous-profiling` `developer-tools` `devops` `find-bottlenecks` `golang` `hacktoberfest` `linux` `monitoring` `observability` `performance` `profiling` `pyroscope` `python` `ruby`

## Description

Pyroscope is a continuous profiling platform designed to collect, store, and visualize application performance data. It functions as an application performance management suite that tracks historical resource usage to identify bottlenecks and detect performance regressions over time.

The platform distinguishes itself through its use of kernel-level instrumentation and dynamic runtime hooks, which allow for performance monitoring without requiring manual code modifications or application restarts. It employs a sidecar agent architecture to offload telemetry processing, utilizing delta-encoded compression and segmented tree storage to maintain long-term historical data efficiently.

The system supports a broad range of observability tasks, including the correlation of performance profiles with distributed traces and the aggregation of metrics into temporal buckets for trend analysis. It provides multi-tenant telemetry management, allowing for secure data transmission, granular access control, and the enrichment of datasets with custom metadata for environment-specific filtering.

Users can manage the profiling lifecycle through operational controls that adjust sampling intervals and resource usage. The platform includes an interactive interface for querying and visualizing execution patterns across diverse programming environments.

## Tags

### System Administration & Monitoring

- [Application Performance Profiling](https://awesome-repositories.com/f/system-administration-monitoring/performance-monitoring-tools/application-performance-profiling.md) — Acts as a centralized system for collecting, storing, and visualizing application performance data.
- [Application Performance Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/application-performance-monitoring.md) — Tracks and visualizes resource consumption in real-time to identify bottlenecks and optimize code execution efficiency.
- [Application Performance Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/application-performance-monitoring/application-performance-monitoring.md) — Provides a suite of agents and server components that track historical resource usage to detect regressions.
- [Distributed Tracing](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/distributed-tracing-execution-analysis/distributed-tracing.md) — Correlates performance profiles with distributed traces to pinpoint code paths causing latency in complex architectures.
- [Kernel Execution Profilers](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/diagnostics/execution-tracers/kernel-tracing-frameworks/kernel-execution-profilers.md) — Provides kernel-level profiling to identify resource bottlenecks and thread contention without requiring manual code changes. ([source](https://grafana.com/docs/pyroscope/latest/configure-client/grafana-alloy/ebpf/))
- [Dynamic Kernel Probes](https://awesome-repositories.com/f/system-administration-monitoring/logging-and-telemetry/dynamic-binary-instrumentation/dynamic-kernel-probes.md) — Captures system-wide performance metrics by attaching eBPF probes to the kernel without modifying application code.
- [Dynamic Binary Instrumentation](https://awesome-repositories.com/f/system-administration-monitoring/logging-and-telemetry/dynamic-binary-instrumentation.md) — Injects profiling hooks into active processes to enable monitoring without requiring application restarts.
- [Language-Specific Instrumentation](https://awesome-repositories.com/f/system-administration-monitoring/language-specific-instrumentation.md) — Provide specialized instrumentation for various programming languages and runtimes to collect and transmit performance data for optimized execution analysis in compiled and interpreted environments. ([source](https://grafana.com/docs/pyroscope/latest/configure-client/language-sdks/java/))

### Data & Databases

- [Hierarchical Performance Visualizers](https://awesome-repositories.com/f/data-databases/data-visualization/hierarchical-performance-visualizers.md) — Retrieve and display stored profiling metrics through an interactive interface to help developers explore resource consumption and analyze execution patterns without complex queries. ([source](https://grafana.com/docs/pyroscope/latest/get-started/))
- [Multi-Tenant Data Management](https://awesome-repositories.com/f/data-databases/multi-tenant-data-management.md) — Centralizes performance data from multiple teams into a secure platform with granular access control and metadata tagging.
- [Time-Series Visualizers](https://awesome-repositories.com/f/data-databases/data-visualization-charts/time-series-visualizers.md) — Aggregates discrete profiling samples into temporal buckets for rapid visualization and trend analysis.
- [Data Compression Algorithms](https://awesome-repositories.com/f/data-databases/data-compression-algorithms.md) — Uses delta-encoded compression to minimize the storage footprint of long-term historical performance data.
- [Profiling Lifecycle Managers](https://awesome-repositories.com/f/data-databases/data-lifecycle-management/profiling-lifecycle-managers.md) — Manages the profiling lifecycle by adjusting sampling intervals and resource usage to ensure efficient data capture. ([source](https://grafana.com/docs/pyroscope/latest/configure-client/language-sdks/java/))

### Operating Systems & Systems Programming

- [eBPF Tooling](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/ebpf-tooling.md) — Utilizes kernel-level instrumentation to capture CPU and resource usage data without requiring manual code changes.

### Testing & Quality Assurance

- [Performance Profilers](https://awesome-repositories.com/f/testing-quality-assurance/performance-profilers.md) — Maintains a historical record of application performance data to detect regressions and analyze resource usage trends.
- [Performance Analysis](https://awesome-repositories.com/f/testing-quality-assurance/performance-testing-analysis/performance-analysis.md) — Uses eBPF to collect CPU and resource usage data from applications without requiring manual code changes.

### Networking & Communication

- [Auto-Instrumentation](https://awesome-repositories.com/f/networking-communication/http-request-utilities/auto-instrumentation.md) — Correlate distributed trace spans with profiling data and automatically instrument web requests to provide immediate visibility into performance patterns without manual configuration. ([source](https://grafana.com/docs/pyroscope/latest/configure-client/language-sdks/ruby/))
- [Data Transmission Reliability](https://awesome-repositories.com/f/networking-communication/data-transmission-reliability.md) — Transmits collected profiling data to remote endpoints with support for secure authentication and multi-tenancy. ([source](https://grafana.com/docs/pyroscope/latest/configure-client/language-sdks/ruby/))

### DevOps & Infrastructure

- [Sidecar Containers](https://awesome-repositories.com/f/devops-infrastructure/sidecar-containers.md) — Deploys lightweight sidecar agents to offload telemetry processing and metadata enrichment from the primary application.

### Programming Languages & Runtimes

- [Profiling Storage Trees](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/hierarchical-tree-structures/segment-trees/profiling-storage-trees.md) — Stores hierarchical profiling data in a compressed tree structure to enable efficient navigation of stack traces.
