Grafana Pyroscope
Тема дорожной карты · Observability
Grafana Pyroscope — открытая платформа непрерывного профилирования, которая собирает, хранит и запрашивает данные профилирования из продакшен-приложений в масштабе, делая профилирование четвёртым столпом наблюдаемости наряду с метриками, логами и трассировками. Pyroscope поддерживает pull-профилирование (через HTTP-эндпоинт pprof) и push-профилирование из языкоспецифичных SDK для Go, Python, Java, Ruby, Node.js и Rust, а также eBPF-профилирование для любого языка без интеграции SDK. Профили хранятся в объектном хранилище (S3 или локальный диск) и доступны для запроса через язык FlameQL Pyroscope или плагин источника данных Grafana Pyroscope, что позволяет коррелировать CPU-флейм-графы с аномалиями метрик Prometheus в едином дашборде Grafana. Секция pyroscope.scrape_configs в файле pyroscope.yaml определяет цели для scraping и интервал — аналогично конфигурации scraping в prometheus.yml. Pyroscope был приобретён Grafana Labs и глубоко интегрирован в стек Grafana LGTM, обеспечивая бесшовную навигацию от медленного спана трассировки к соответствующему CPU-профилю за то же временно́е окно.
Как это работает
Grafana Pyroscope — 4-й столп observability: always-on профилирование CPU, памяти, lock contention, goroutines/threads. Инструменты: Pyroscope (теперь часть Grafana, поддерживает много языков), Polar Signals Parca, datadog-profiler, async-profiler (JVM), pprof (Go встроен). Найдите медленную функцию в production без повторного запуска с прицепленным профайлером. Flame graphs — каноническая визуализация. Overhead sampling обычно < 5%.
Когда применять
Включите continuous profiling для любого сервиса с performance-sensitive кодом (latency-sensitive API, batch-jobs). Pyroscope/Parca — open-source выбор; включите per-language профайлеры (net/http/pprof для Go, pyflame / py-spy для Python, async-profiler для JVM). Профайлите в production — staging показывает другие паттерны. Комбинируйте с traces для "какой span = какая функция".
Типичные ошибки
Ловушки Grafana Pyroscope: overhead профайлинга не трекается (иногда > 10% — sampling rate важен); профили без service-контекста (какая версия? какая env?); профайлят всё, но никогда не читают данные ("они у нас есть" != "мы их используем"); flame graphs без фильтрации (одна гигантская башня прячет всё остальное).