这个项目能做什么
Grafana Pyroscope 是一个用于收集和分析应用程序性能数据的开源持续分析平台。其目标是使资源消耗可见:可以在整个系统中检查 CPU、内存和 I/O 行为,然后将其缩小到特定的服务、函数甚至单行代码。
README 中描述的典型用途包括主动式和响应式。在主动方面,团队可以在延迟问题出现之前降低资源消耗、提高应用程序性能或预防问题。在响应方面,该平台旨在快速解决事件,为调试活跃的 CPU、内存或 I/O 瓶颈提供行级细节。
架构
该项目由三个主要部分组成:
- Pyroscope Server:存储和处理分析数据并提供查询服务。
- 客户端和插桩:分析数据通过 Pyroscope 语言 SDK(推送)、Grafana Alloy(拉取或推送)或通过 OTLP 从 OpenTelemetry 兼容源(如 OpenTelemetry eBPF 分析器)传输到服务器。
- Grafana Profiles Drilldown:一个用于可视化和分析分析数据的无查询界面,原名为 Explore Profiles。
Pyroscope 2.0 将新的 v2 架构设为默认。分析数据直接写入对象存储,无需内存摄取器和本地磁盘,项目方表示这简化了操作并降低了大规模部署时的资源使用。压缩工作线程在后台将小分段合并为大块,而查询则在对象存储中扇出,以便在 Grafana Profiles Drilldown 中构建火焰图。现有的 v1 部署可以通过标志选择加入并迁移,README 中提供了发布说明、架构概述和迁移指南的链接。
插桩与语言支持
项目提供了 Go、Java、Python、Ruby、Node.js、.NET 和 Rust 的 SDK 文档和示例。除了基于 SDK 的推送外,README 还指向了用于拉取或推送收集的 Grafana Alloy,以及通过 Grafana Alloy 实现的基于 eBPF 的自动插桩,以及来自 OpenTelemetry 兼容分析器的 OTLP 摄取。项目记录了支持的语言列表以及适用于每种语言的分析类型。
快速上手
服务器可以通过多种方式在本地运行:
- Docker:docker run -it -p 4040:4040 grafana/pyroscope
- macOS/Linux 上的 Homebrew:brew install pyroscope-io/brew/pyroscope,然后 brew services start pyroscope
- 二进制文件:从最新版本下载适用于您操作系统和架构的存档,解压并运行 ./pyroscope
服务器监听 4040 端口。README 还参考了关于 Kubernetes/Helm 部署、Linux 软件包、从源码构建和完整服务器配置的文档。Grafana Play 上提供了一个托管的实时演示,Profiles Drilldown 被描述为 Grafana Cloud/OSS 中预安装的默认分析探索方式。
社区与许可
该项目采用 AGPLv3 许可,拥有 CI 和 Go Report Card 徽章,发布版本和 Docker 镜像,并提供 Go 包引用。仓库中包含贡献者指南,README 感谢了该平台所基于的工作,包括 Brendan Gregg 的 Flame Graphs、rbspy、py-spy 和 phpspy 采样分析器、flamebearer、speedscope,以及使 Linux 内核中基于 BPF 的分析成为可能的贡献。可通过 GitHub issues 和 Grafana Slack 征集关于所需集成的反馈。
评论
0 评分人数达到10人后显示
登录后参与讨论。