Sobre el proyecto

Grafana Pyroscope es una plataforma de profiling continuo de código abierto para recopilar y analizar datos de rendimiento de aplicaciones. Su objetivo es hacer visible el consumo de recursos: el comportamiento de la CPU, la memoria y la I/O puede examinarse en todo un sistema y luego reducirse a un servicio, función o incluso a una sola línea de código. Los usos típicos descritos en el README son tanto proactivos como reactivos. Proactivamente, los equipos pueden reducir el consumo de recursos, mejorar el rendimiento de la aplicación o prevenir problemas de latencia antes de que surjan. Reactivamente, la plataforma está orientada a resolver incidentes rápidamente, con detalles a nivel de línea para depurar cuellos de botella activos de CPU, memoria o I/O. Arquitectura El proyecto consta de tres partes principales: - Pyroscope Server: almacena y procesa los datos de profiling y atiende las consultas. - Clientes e instrumentación: los perfiles llegan al servidor a través de los SDK de lenguaje de Pyroscope (push), a través de Grafana Alloy (pull o push), o mediante OTLP desde fuentes compatibles con OpenTelemetry, como el profiler eBPF de OpenTelemetry. - Grafana Profiles Drilldown: una interfaz sin consultas para visualizar y analizar datos de profiling, anteriormente conocida como Explore Profiles. Pyroscope 2.0 establece la nueva arquitectura v2 como predeterminada. Los perfiles se escriben directamente en el almacenamiento de objetos, eliminando la necesidad de ingestas en memoria y discos locales, lo que según el proyecto simplifica las operaciones y reduce el uso de recursos a escala. Los trabajadores de compactación fusionan segmentos pequeños en bloques más grandes en segundo plano, mientras que las consultas se distribuyen a través del almacenamiento de objetos para construir flame graphs en Grafana Profiles Drilldown. Las implementaciones v1 existentes pueden optar por migrar mediante un flag, y el README incluye enlaces a notas de lanzamiento, una descripción general de la arquitectura y una guía de migración. Instrumentación y soporte de lenguajes Se enumeran la documentación y los ejemplos de los SDK para Go, Java, Python, Ruby, Node.js, .NET y Rust. Más allá del push basado en SDK, el README señala a Grafana Alloy para la recolección pull o push y a la auto-instrumentación basada en eBPF a través de Grafana Alloy, así como la ingesta OTLP desde profilers compatibles con OpenTelemetry. El proyecto documenta una lista de lenguajes soportados y qué tipos de profiling se aplican a cada uno. Primeros pasos El servidor puede ejecutarse localmente de varias maneras: - Docker: docker run -it -p 4040:4040 grafana/pyroscope - Homebrew en macOS/Linux: brew install pyroscope-io/brew/pyroscope, luego brew services start pyroscope - Binario: descargar el archivo para su SO y arquitectura desde el último lanzamiento, descomprimirlo y ejecutar ./pyroscope El servidor escucha en el puerto 4040. El README también hace referencia a la documentación para el despliegue en Kubernetes/Helm, paquetes de Linux, construcción desde el código fuente y la configuración completa del servidor. Hay una demo en vivo disponible en Grafana Play, y Profiles Drilldown se describe como preinstalado en Grafana Cloud/OSS como la forma predeterminada de explorar perfiles. Comunidad y licencias El proyecto tiene licencia AGPLv3, cuenta con insignias de CI y Go Report Card, publica lanzamientos e imágenes de Docker, y proporciona referencias de paquetes de Go. El repositorio incluye una guía para contribuyentes, y el README reconoce el trabajo en el que se basa la plataforma, incluyendo los Flame Graphs de Brendan Gregg, los profilers de muestreo rbspy, py-spy y phpspy, flamebearer, speedscope, y las contribuciones que hicieron posible el profiling basado en BPF en el kernel de Linux. Se solicitan comentarios sobre integraciones deseadas a través de issues de GitHub y el Slack de Grafana.