-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Home
很早的时候,我们使用BTrace排查问题,在感叹BTrace的强大之余,也曾好几次将线上系统折腾挂掉。2012年淘宝的聚石写了HouseMD,将常用的几个Btrace脚本整合在一起形成一个独立风格的应用,但其核心代码用的是Scala,我们没这方面的编程维护经验,所以只好艳羡HouseMD的才思敏捷而无法在其上增加功能。 |
PS:目前Greys仅支持Linux/Unix/Mac上的Java6+,Windows暂时无法支持
Greys是一个JVM进程执行过程中的异常诊断工具,可以在不中断程序执行的情况下轻松完成问题排查工作。
和HouseMD一样,Greys-Anatomy取名同名美剧“实习医生格蕾”,目的是向前辈致敬。代码编写的时候参考了BTrace和HouseMD两个前辈的思路。
-
有时候突然一个问题反馈上来,需要入参才能完成定位,但恰恰没有任何日志。回去加上重新部署,一杯咖啡时间过去了,是不是很崩溃?
-
当你经过反复这样几次折腾之后变得聪明了,在自己的代码的所有入参和出参地方都加上
debug
日志,但这次问题似乎暴露在别人的代码中了...是不是很无奈? -
突然遇到线上一个性能问题无法确定到底是哪个环节的耗时,只能反复抓
jstack
猜,还有没有办法可以好好的过日子啦?
遇到以上问题时,你就是我们这类工具的目标客户,此类工具能利用Java6的Instrumentation
特性,动态增强你所指定的类,获取你想要到的信息。
- 命令行交互
-
查看加载类,方法信息
-
查看JVM当前基础信息
-
方法执行监控(调用量,失败率,响应时间等)
-
方法执行数据观测、记录与回放(参数,返回结果,异常信息等)
-
方法调用追踪渲染
-
纯Java实现的开源项目
Greys采用纯Java编写并留有良好的扩展,如果你有需求,只要你会Java,就可以为你自己编写想要的功能。
-
安装使用便捷
-
可无需重启JVM进行CT式诊断
-
方法级问题诊断
-
Groovy表达式展开变对象,方便你观察入参、出参、异常、当前对象的各种属性细节
Greys最有利的武器是他的Groovy表达式,能让你在感受到HouseMD集成功能便利的同时,也能发挥出自定义Btrace脚本的灵活。
-
常用分析命令集成,
monitor
、ptrace
、tt
等作者将5年来对线上业务问题定位的经验浓缩到了这几个命令中,希望这些经验积累能帮助到更多的人。
-
多人并行协作
基于C/S架构的任务模式甚至能让多人同时远程到同一进程上执行不同的指令、脚本,非常适合团队一起进行线上问题排查与跟踪。