Skip to content
李夏驰 edited this page Apr 6, 2015 · 30 revisions

诞生

很早的时候,我们使用BTrace排查问题,在感叹BTrace的强大之余,也曾好几次将线上系统折腾挂掉。2012年淘宝的聚石写了HouseMD,将常用的几个Btrace脚本整合在一起形成一个独立风格的应用,但其核心代码用的是Scala,我们没这方面的编程维护经验,所以只好艳羡HouseMD的才思敏捷而无法在其上增加功能。

于是乎,Greys诞生了。

PS:目前Greys仅支持Linux/Unix/Mac上的Java6+,Windows暂时无法支持

Greys是一个java进程执行过程中的异常诊断工具。 在不中断程序执行的情况下轻松完成问题排查工作。

和HouseMD一样,Greys-Anatomy取名同名美剧“实习医生格蕾”,目的是向前辈致敬。代码编写的时候参考了BTrace和HouseMD两个前辈的思路。

特性功能

  • **交互方式:**命令行交互,支持命令参数Tab提示补全。

  • 内置功能:

  • 查看加载类,方法信息

  • 方法执行监控(调用量,成功失败率,响应时间)

  • 方法执行数据观测(参数,返回结果,异常信息等)

  • 方法执行数据记录

  • 性能开销渲染

  • 方法执行数据自定义观测(js脚本)

  • 查看方法调用堆栈

  • 软件特点:

基于C/S架构的任务模式甚至能让多人同时远程到同一进程上执行不同的指令、脚本,非常适合团队一起进行线上问题排查与跟踪。Greys采用纯Java编写并留有良好的扩展,如果你有需求,只要你会Java,就可以为你自己编写想要的功能。 Greys最有利的武器是他的ONGL表达式,能让你在感受到HouseMD集成功能便利的同时,也能发挥出自定义Btrace脚本的灵活。

多人协作

  1. 应用管理员拥有JVM进程权限,由他来首先在目标JVM上启动Greys
  2. 技术专家A和B平时没有对应机器的权限,但只要网络能访问,他们可以通过指定ip:port直接访问目标机器的JVM进程,仿佛在本地一般
  • 安装使用便捷,仅一个jar包
  • 可无需重启JVM进行CT式诊断
  • ONGL表达式展开变量,方便你查看入参、出参、异常、当前对象的各种属性细节
  • 常用命令集成,monitorprofilertimetunnel
  • 时间隧道,tt命令能以时间维度纪录下监控期内的每一次调用环境
  • 多人并行协作
  • 纯Java实现的开源项目
Clone this wiki locally