Pyroscope Go 性能数据持续收集分析
目录
Pyroscope Go 性能数据持续收集分析gogolangprofiling
Pyroscope 开放源码的性能持续分析平台。支持多种语言:Go, Python, Rust, Java 等,支持多平台,多种部署方式。具有便捷的可视化分析界面,极致的数据查询、分析与存储能力,可配的数据淘汰策略,Push 与 Pull 模式。可支持多种数据导出格式: png,json, pprof, html,flamegraph.com,可接入 grafana 展示。
版权声明:本文为博主 xwi88 的原创文章,遵循 CC BY-NC 4.0 版权协议,禁止商用,转载请注明出处,欢迎关注 https://github.com/xwi88
为什么使用
- 了解应用程序的哪些部分消耗资源最多
- 持续性分析增加了一个时间维度,允许您随着时间的推移了解系统资源使用情况(如 CPU、内存等) ,并使你能够定位、调试和修复与性能相关的问题。
使用场景
- 查找代码中的性能问题
- 解决高 CPU 利用率的问题
- 定位并修复内存泄漏
- 理解应用程序的调用树
- 跟踪指标随时间的变化
负载消耗
通过使用采样分析,Pyroscope 能够以最小的开销(约为 2-5%)收集数据。 特别构建的存储引擎能高效地压缩和存储数据。
- 由于采样分析技术,CPU 开销较低
- 控制分析数据粒度(
10s至多年) - 高效的压缩,低的磁盘空间需求和成本
工作模式
类似于常见的数据采集处理工具,
Agent-Server模式。
Pyroscope Server记录并聚合应用程序正在执行的操作,然后将该数据发送到Pyroscope服务器。Pyroscope Agent处理、聚合和存储来自代理的数据,以实现任意时间范围内的快速查询。稍后,你可以查看在任何时间范围内的分析数据。

Server 安装
安装部署方式
- Docker
- K8S
- Direct
- MacOS
- Linux
- Windows
MacOS 与 Linux 安装示例
示例
export pyroscope_version=0.13.0
| |
配置
支持多种配置,优先级如下:
- 命令行参数
- 环境变量
- 配置文件
我们将使用配置文件进行服务端的配置。配置文件默认位置:
/etc/pyroscope/server.ymlon Linux/usr/local/etc/pyroscope/server.ymlon Intel macOS/opt/homebrew/etc/pyroscope/server.ymlon M1 macOS
可通过参数指定配置文件路径:
pyroscope server -config my-custom-config.yml命令行方式指定推荐PYROSCOPE_CONFIG=/tmp/pyroscope-server.yml pyroscope server环境变量指定
示例
pyroscope-server.yml
| |
启动
pyroscope server -config pyroscope-server.yml.yml
Go Agent 使用
采用
Push 模式,简单高效。
依赖导入
go get github.com/pyroscope-io/client/pyroscope
Agent Push 示例
| |
认证登录
默认用户及密码为:
admin:admin
pyroscope admin user reset-password --username {admin-username} --password {new-password}
数据查询导出
