Sobre o projeto
Grafana Pyroscope é uma plataforma de profiling contínuo de código aberto para coletar e analisar dados de desempenho de aplicações. Seu objetivo é tornar visível o consumo de recursos: o comportamento de CPU, memória e I/O pode ser examinado em todo um sistema e, em seguida, restringido a um serviço, função ou até mesmo a uma única linha de código.
Os usos típicos descritos no README são tanto proativos quanto reativos. Proativamente, as equipes podem reduzir o consumo de recursos, melhorar o desempenho da aplicação ou prevenir problemas de latência antes que eles surjam. Reativamente, a plataforma visa resolver incidentes rapidamente, com detalhes ao nível de linha para depurar gargalos ativos de CPU, memória ou I/O.
Arquitetura
O projeto consiste em três partes principais:
- Pyroscope Server: armazena e processa dados de profiling e atende consultas.
- Clientes e instrumentação: os profiles chegam ao servidor através dos SDKs de linguagem do Pyroscope (push), através do Grafana Alloy (pull ou push), ou via OTLP de fontes compatíveis com OpenTelemetry, como o OpenTelemetry eBPF profiler.
- Grafana Profiles Drilldown: uma interface sem consultas para visualizar e analisar dados de profiling, anteriormente conhecida como Explore Profiles.
O Pyroscope 2.0 torna a nova arquitetura v2 o padrão. Os profiles são gravados diretamente no armazenamento de objetos, eliminando a necessidade de ingesters em memória e discos locais, o que, segundo o projeto, simplifica as operações e reduz o uso de recursos em escala. Workers de compactação mesclam pequenos segmentos em blocos maiores em segundo plano, enquanto as consultas se distribuem pelo armazenamento de objetos para construir flame graphs no Grafana Profiles Drilldown. Implantações v1 existentes podem optar pela migração via flag, e o README fornece links para notas de versão, visão geral da arquitetura e um guia de migração.
Instrumentação e suporte a linguagens
Documentação de SDK e exemplos estão listados para Go, Java, Python, Ruby, Node.js, .NET e Rust. Além do push baseado em SDK, o README aponta para o Grafana Alloy para coleta pull ou push e para a auto-instrumentação baseada em eBPF via Grafana Alloy, bem como a ingestão OTLP de profilers compatíveis com OpenTelemetry. O projeto documenta uma lista de linguagens suportadas e quais tipos de profiling se aplicam a cada uma.
Primeiros passos
O servidor pode ser executado localmente de várias maneiras:
- Docker: docker run -it -p 4040:4040 grafana/pyroscope
- Homebrew no macOS/Linux: brew install pyroscope-io/brew/pyroscope, depois brew services start pyroscope
- Binário: baixe o arquivo para seu SO e arquitetura na versão mais recente, descompacte e execute ./pyroscope
O servidor escuta na porta 4040. O README também referencia a documentação para implantação em Kubernetes/Helm, pacotes Linux, compilação a partir do código-fonte e configuração completa do servidor. Uma demonstração ao vivo hospedada está disponível no Grafana Play, e o Profiles Drilldown é descrito como pré-instalado no Grafana Cloud/OSS como a maneira padrão de explorar profiles.
Comunidade e licenciamento
O projeto é licenciado sob AGPLv3, possui badges de CI e Go Report Card, publica versões e imagens Docker, e fornece referências de pacotes Go. Um guia do contribuidor está incluído no repositório, e o README credita o trabalho no qual a plataforma se baseia, incluindo os Flame Graphs de Brendan Gregg, os profilers de amostragem rbspy, py-spy e phpspy, flamebearer, speedscope e as contribuições que tornaram possível o profiling baseado em BPF no kernel do Linux. Feedbacks sobre integrações desejadas são solicitados através de issues no GitHub e no Slack da Grafana.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.