V2EX 10月13日 11:03
Ghostscope:一款融合多种工具风格的eBPF追踪工具
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

Ghostscope是一款由开发者构思并开发的eBPF追踪工具,旨在解决线上服务日志不足的问题。它借鉴了cgdb、tmux、vim和emacs等工具的操作风格与按键习惯,提供了TUI交互界面。该工具利用eBPF+uprobe技术进行信息抓取,相较于传统的systemtap,在安全性上更有保障。目前项目处于早期阶段,对C语言支持较好,对C++和Rust的支持有限,且对高优化编译器的探测能力有待加强。作者欢迎社区贡献想法和改进建议,并持续进行迭代开发。

💡 **Ghostscope的起源与设计理念**:该工具源于开发者在线上排查问题时,发现日志信息不足且修改线上服务受限的痛点。为了解决这一难题,开发者借鉴了cgdb、tmux、vim、emacs等多种开发工具的操作风格和按键习惯,并将其融入到Ghostscope的TUI(文本用户界面)操作中,力求提供一个顺手且高效的追踪体验。

🛡️ **eBPF+uprobe的安全性优势**:与传统的systemtap工具相比,Ghostscope采用eBPF+uprobe的技术进行信息抓取,这种方式在安全性和稳定性方面更有保障。开发者曾因使用systemtap导致测试机宕机两次,才敢在小流量机器上进行信息抓取,凸显了eBPF技术的可靠性,使得线上追踪更为放心。

🚀 **当前限制与未来展望**:Ghostscope目前仍处于项目启动阶段,存在一些限制。对于C语言的支持较为完善,但对C++和Rust等语言的支持仅限于mangled查找,尚未完全支持高级语言特性。此外,对于编译器开启高优化的程序,其探测能力也有待增强,复杂的内联和DWARF调试信息给探测带来了挑战。作者正积极迭代开发,并欢迎用户通过issue或留言提出宝贵意见,共同推动项目发展。

🔧 **用户交互与开发迭代**:开发者在开发Ghostscope的过程中,着重于融合多种开发工具的操作风格,特别是TUI操作,使得工具的使用体验更加直观和便捷。目前作者正处于疯狂迭代阶段,首要目标是让工具自身好用,后续将根据实际需求和社区反馈来规划下一步的迭代方向。

项目地址: https://github.com/swananan/ghostscope

大家感兴趣可以看 README 的演示,我目前可以拿来跟踪 nginx 进程,用的还是蛮顺手的,这个工具我想了好久了,特别是 TUI 操作的时候,加上了我喜欢的 cgdb 、tmux 、vim 甚至还有 emacs 等工具的一些操作风格和按键习惯。所以,我在开发的时候,还是蛮开心的。

想做这个工具,主要是我以前排查问题的时候,总是觉得日志不够用,但是线上服务,又不能随便发版本,各种红线和变更要求,条条框框卡的很死。我好久以前尝试拿着 systemtap ,根据调试信息去抓线上我想看的信息,属于强行死马当活马医(问题如果拖着不查,后面暴雷了也是一个死😂)。记得,我当时测试机跑宕机了两次,我才敢拿着 systemtap 脚本去小流量机器偷偷抓信息。现在 eBPF + uprobe 的抓取方式,至少安全性是靠谱的。

不过目前项目还在启动阶段,有蛮多的限制,具体文档有写。我这边简单提两句,对 c 语言支持比较好(有点废话的意思😁),至于 C++、Rust 的话,目前只简单支持了 mangled 查找,各种高级语言特性完全不支持。另外,对于编译器开了高优化的程序,探测能力还有待后续增强,各种内联,调试信息 DWARF 复杂好多,搞得我头大。

大家有什么想法,欢迎开 issue 或者在帖子留言,我还在疯狂迭代,准备先让自己觉得好用,后面再看下一步迭代方向。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Ghostscope eBPF uprobe 性能分析 Linux 开发工具 TUI Go Systemtap 性能诊断
相关文章