Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/grafana/pyroscope

Continuous Profiling Platform. Debug performance issues down to a single line of code
https://github.com/grafana/pyroscope

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

Last synced: about 1 month ago
JSON representation

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

Lists

README

        

Pyroscope

[![ci](https://github.com/grafana/pyroscope/actions/workflows/test.yml/badge.svg)](https://github.com/grafana/pyroscope/actions/workflows/test.yml)
[![JS Tests Status](https://github.com/grafana/pyroscope/workflows/JS%20Tests/badge.svg)](https://github.com/grafana/pyroscope/actions?query=workflow%3AJS%20Tests)
[![Go Report](https://goreportcard.com/badge/github.com/grafana/pyroscope)](https://goreportcard.com/report/github.com/grafana/pyroscope)
[![License: AGPLv3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](LICENSE)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fgrafana%2Fpyroscope.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fgrafana%2Fpyroscope?ref=badge_shield)
[![Latest release](https://img.shields.io/github/release/grafana/pyroscope.svg)](https://github.com/grafana/pyroscope/releases)
[![DockerHub](https://img.shields.io/docker/pulls/grafana/pyroscope.svg)](https://hub.docker.com/r/grafana/pyroscope)
[![GoDoc](https://godoc.org/github.com/grafana/pyroscope?status.svg)](https://godoc.org/github.com/grafana/pyroscope)

### 🌟 What is Grafana Pyroscope?

Grafana Pyroscope is an open source continuous profiling platform. It will help you:
* Find performance issues and bottlenecks in your code
* Use high-cardinality tags/labels to analyze your application
* Resolve issues with high CPU utilization
* Track down memory leaks
* Understand the call tree of your application
* Auto-instrument your code to link profiling data to traces

## 🔥 [Pyroscope Live Demo](https://demo.pyroscope.io/) 🔥

[![Pyroscope GIF Demo](https://user-images.githubusercontent.com/23323466/143324845-16ff72df-231e-412d-bd0a-38ef2e09cba8.gif)](https://demo.pyroscope.io/)

## 🎉 Features

* Minimal CPU overhead
* Horizontally scalable
* Efficient compression, low disk space requirements
* Can handle high-cardinality tags/labels
* Calculate the performance "diff" between various tags/labels and time periods
* Advanced analysis UI

## 💻 Quick Start: Run Pyroscope Locally

### Homebrew
```sh
brew install pyroscope-io/brew/pyroscope
brew services start pyroscope
```

### Docker
```sh
docker run -it -p 4040:4040 grafana/pyroscope
```

For more documentation on how to configure Pyroscope server, see [our server documentation](https://grafana.com/docs/pyroscope/latest/configure-server/).

## Send data to server via Pyroscope agent (language specific)

For more documentation on how to add the Pyroscope agent to your code, see the [agent documentation](https://grafana.com/docs/pyroscope/latest/configure-client/) on our website or find language specific examples and documentation below:




Golang


Documentation

Examples



Java


Documentation

Examples



Python


Documentation

Examples



Ruby


Documentation

Examples





Node.js


Documentation

Examples



Dotnet


Documentation

Examples



eBPF


Documentation

Examples



Rust


Documentation

Examples

## Deployment Diagram

![deployment_diagram](https://grafana.com/media/docs/pyroscope/pyroscope_client_server_diagram.png)

## Documentation

For more information on how to use Pyroscope with other programming languages, install it on Linux, or use it in production environment, check out our documentation:

* [Getting Started](https://grafana.com/docs/pyroscope/latest/get-started/)
* [Deployment Guide](https://grafana.com/docs/pyroscope/latest/deploy-kubernetes/)
* [Pyroscope Architecture](https://grafana.com/docs/pyroscope/latest/reference-pyroscope-architecture/)

## Downloads

You can download the latest version of pyroscope for macOS, linux and Docker from our [Releases page](https://github.com/grafana/pyroscope/releases).

## Supported Languages

* [x] Go (via `pprof`)
* [x] Python (via `py-spy`)
* [x] Ruby (via `rbspy`)
* [x] Linux eBPF
* [x] Java (via `async-profiler`)
* [x] Rust (via `pprof-rs`)
* [x] .NET
* [x] PHP (via `phpspy`)
* [x] Node

Let us know what other integrations you want to see in [our issues](https://github.com/grafana/pyroscope/issues?q=is%3Aissue+is%3Aopen+label%3Anew-profilers) or in [our slack](https://slack.grafana.com).

## Credits

Pyroscope is possible thanks to the excellent work of many people, including but not limited to:

* Brendan Gregg — inventor of Flame Graphs
* Julia Evans — creator of rbspy — sampling profiler for Ruby
* Vladimir Agafonkin — creator of flamebearer — fast flame graph renderer
* Ben Frederickson — creator of py-spy — sampling profiler for Python
* Adam Saponara — creator of phpspy — sampling profiler for PHP
* Alexei Starovoitov, Brendan Gregg, and many others who made BPF based profiling in Linux kernel possible
* Jamie Wong — creator of speedscope — interactive flame graph visualizer

## Contributing

To start contributing, check out our [Contributing Guide](docs/internal/contributing/README.md)

### Thanks to the contributors of Pyroscope!

[//]: contributor-faces


































































































[//]: contributor-faces