简单对比下parca 以及pyroscope,两个都是持续profile 平台工具
技术核心
- parca
利用了ebpf进行agent 的push 处理,当然也支持基于google 的pprof,parca 核心就利用了pprof - pyroscope
属于自己定义的格式,
语言支持
- pyroscope
当前支持的语言还是比较多的,基本主要的都可以 - parca
目前主要是golang,c,c++,java jing尽管支持,但是不是很理想,因为jit 语言的特性,同时对于脚本语言支持也有限,主要是利用的技术栈太偏底层
但是脚本语言又具有特殊性
数据存储
- pyroscope
包含了内置的server以及cloud,同时也类似prometheus 支持remote write - parca
包含了元数据存储,以及profiler 存储,目前来说看着只能单机,不能远程存储,但是可以通过远端server模式,但是不是很方便,可以自己扩展
查询处理
- pyroscope
包含了flameql,自己的查询语言,类似prometheus - parca
类似prometheus,因为团队人就来自proemtheus 的开发人员
灵活性
使用上大家类似,但是parca 好多prometheus 玩法的影子,包含了pull 以及push 模式的集成
系统部署
从目前两个产品来说大家都是基本数据单体模式,对于server 还都没有ha 以及存储分离的模式,但是pyroscope 支持了一种remote write 类似可以实现一种
分离的模式,当让理论上parca 也是可以支持的,但是目前parca 依赖的frostdb (一个嵌入式的列式存储),如果parca后期暴露frostdb 为一个通用的存储服务
分离就比较好搞了
说明
以上是通过学习对比的分析,实际上parca以及pyroscope源码还都是值得学习的,都是很不错的持续profile 平台工具,对于分析实际问题还是比较有用的