Skip to content

mage234/greys-anatomy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LOGO icon

线上系统为何经常出错?数据库为何屡遭黑手?业务调用为何频频失败?连环异常堆栈案,究竟是那次调用所为? 数百台服务器意外雪崩背后又隐藏着什么?是软件的扭曲还是硬件的沦丧? 走进科学带你了解Greys, Java线上问题诊断工具。

相关文档

程序安装

  • 远程安装

    curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|sh
  • 远程安装(短链接)

    curl -sLk http://t.cn/R2QbHFc|sh

最新版本

VERSION : 1.7.5.3

  • 修复trace命令在遇到方法完全try...catch异常时堆栈错误的情况

  • 修复tt命令搜索非Advice对象提供方法时无法正确找到直接变量(如cost,index等)的BUG.用#cost,#index代替

  • 增加gs.shga.sh两个脚本

  • 增加js命令,支持javascript脚本

  • js命令支持CommonJS规范(BMD规范实现)

    /**
     * 模版
     */
    require(['greys'], function (greys) {
        greys.watching({
    
            /**
             * 脚本创建函数
             * 在脚本第一次运行时候执行,可以在这个函数中进行脚本初始化工作
             * @param output 输出器
             */
            create: function (output) {
    
            },
    
            /**
             * 脚本销毁函数
             * 在脚本运行完成时候执行,可以在这个函数中进行脚本销毁工作
             * @param output 输出器
             */
            destroy: function (output) {
    
            },
    
            /**
             * 方法执行前回调函数
             * 在Java方法执行之前执行该函数
             * @param output    输出器
             * @param advice    通知点
             * @param context   方法执行上下文(线程安全)
             */
            before: function (output, advice, context) {
    
            },
    
            /**
             * 方法返回回调函数
             * 在Java方法执行成功之后,Java方法返回之前执行该函数
             * @param output    输出器
             * @param advice    通知点
             * @param context   方法执行上下文(线程安全)
             */
            returning: function (output, advice, context) {
    
            },
    
            /**
             * 方法抛异常回调函数
             * 在Java方法内部执行抛异常之后,Java方法对外抛异常之前执行该函数
             * @param output    输出器
             * @param advice    通知点
             * @param context   方法执行上下文(线程安全)
             */
            throwing: function (output, advice, context) {
    
            },
    
        });
    })

版本号说明

主版本.大版本.小版本.漏洞修复

  • 主版本

    这个版本更新说明程序架构体系进行了重大升级,比如之前的0.1版升级到1.0版本,整个软件的架构从单机版升级到了SOCKET多机版。并将Greys的性质进行的确定:Java版的HouseMD,但要比前辈们更强。

  • 大版本

    程序的架构设计进行重大改造,但不影响用户对这款软件的定位。

  • 小版本

    增加新的命令和功能

  • 漏洞修复

    对现有版本进行漏洞修复和增强

    • 主版本大版本、之间不做任何向下兼容的承诺,即0.1版本的Client不保证一定能正常访问1.0版本的Server。

    • 小版本不兼容的版本会在版本升级中指出

    • 漏洞修复保证向下兼容

维护者

程序编译

  • 打开终端

    git clone git@github.com:oldmanpushcart/greys-anatomy.git
    cd greys-anatomy/bin
    ./greys-packages.sh
  • 程序执行

    target/目录下生成对应版本的release文件,比如当前版本是1.7.0.4,则生成文件target/greys-1.7.0.4-bin.zip

    程序在本地编译时会主动在本地安装当前编译的版本,所以编译完成后即相当在本地完成了安装。

写在后边

心路感悟

我编写和维护这款软件已经5年了,5年中Greys也从0.1版本一直重构到现在的1.7。在这个过程中我得到了许多人的帮助与建议,并在年底我计划发布2.0版本,将开放Greys的底层通讯协议,支持websocket访问。

多年的问题排查经验我没有过多的分享,一个Java程序员个中的苦闷也无从分享,一切我都融入到了这款软件的命令中,希望这些沉淀能帮助到可能需要到的你少走一些弯路,同时我也非常期待你们对她的反馈,这样我将感到非常开心和有成就感。

帮助我们

Greys的成长需要大家的帮助。

  • 分享你使用Greys的经验

    我非常希望能得到大家的使用反馈和经验分享,如果你有,请将分享文章敏感信息脱敏之后邮件给我:oldmanpushcart@gmail.com,我将会分享给更多的同行。

  • 帮助我完善代码或文档

    一款软件再好,也需要详细的帮助文档;一款软件再完善,也有很多坑要埋。今天我的精力非常有限,希望能得到大家共同的帮助。

  • 如果你喜欢这款软件,欢迎打赏一杯咖啡

    嗯,说实话,我是指望用这招来买辆玛莎拉蒂...当然是个玩笑~你们的鼓励将会是我的动力,钱不在乎多少,重要的是我将能从中得到大家善意的反馈,这将会是我继续前进的动力。

    alipay

联系我们

有问题阿里同事可以通过旺旺找到我,阿里外的同事可以通过我的微博联系到我。今晚的杭州大雪纷飞,明天西湖应该非常的美丽,大家晚安。

菜鸟-杜琨(dukun@alibaba-inc.com

About

Java诊断工具

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 90.0%
  • JavaScript 7.3%
  • Shell 2.7%