项目地址

https://github.com/qunarcorp/bistoury

简介

Bistoury 是去哪儿网开源的一个对应用透明,无侵入的 java 应用诊断工具,用于提升开发人员的诊断效率和能力。

Bistoury 的目标是一站式 java 应用诊断解决方案,让开发人员无需登录机器或修改系统,就可以从日志、内存、线程、类信息、调试、机器和系统属性等各个方面对应用进行诊断,提升开发人员诊断问题的效率和能力。

Bistoury 在公司内部原有 agent 的基础上集成 Alibaba 开源的arthas和唯品会开源的vjtools,提供了更加丰富的功能,感谢他们做出的优秀工作。

Arthas 和 vjtools 已经是很优秀的工具,我们为什么还要开发 Bistoury?

Arthas 和 vjtools 通过命令行或类似的方式使用,不可否认命令行在很多时候具有比较高的效率;但图形化界面也有其自身的优点,特别是在参数复杂时使用起来更加简单,效率更高。Bistoury 在保留命令行界面的基础上,还对很多命令提供了图形化界面,方面用户使用。

Arthas 和 vjtools 针对单台机器,从机器的维度对系统进行诊断,没有提供全局的视角;而在线应用往往部署在多台机器,Bistoury 可以和使用方应用中心整合,从应用的维度对系统进行诊断,提供了更多的可能。

Arthas 和 vjtools 在使用上,要么登录机器,要么需要使用者提供相应的 ip 和端口;Bistoury 去掉各种设置,提供统一的 web 入口,从页面上选择应用和机器即可使用。

除了这些针对性优化,Bistoury 在保留 arthas 和 vjtools 的所有功能之外,还提供了更加丰富的功能。

Bistoury 的在线 debug 功能去掉了各种复杂参数,模拟 ide 调试体验,通过 web 界面提供断点调试的功能,可以在不阻塞应用的情况下捕获断点处的信息(包括本地变量、成员变量、静态变量和方法调用栈)。

Bistoury 提供了线程级 cpu 使用率监控,可以监控系统每个线程的分钟级 cpu 使用率,并提供最近几天的历史数据查询。

Bistoury 可以动态对方法添加监控,监控方法的调用次数、异常次数和执行时间,同时也保留最近几天的监控数据。

Bistoury 提供了日志查看功能,可以使用 tail、grep 等命令对单台或同时对多台机器的日志进行查看。

Bistoury 提供可视化页面实时查看机器和应用的各种信息,包括主机内存和磁盘使用、cpu 使用率和 load、系统配置文件、jar 包信息、jvm 信息、内存使用和 gc 等等。

快速上手

也许你正面对一个难以捉摸的线上问题束手无策,不妨来试试 Bistoury 的快捷部署脚本,在一分钟内启动 Bistoury 然后插入断点开始调试吧!

使用文档

java 版本要求

jdk1.8+

系统要求

目前只支持 linux 系统(支持 mac os)

project

欢迎大家各种 star,fork,提 issue,pull request,感觉还可以就点个 star 吧!

Q & A

  • jdk 版本要求为 1.8,但是代码实现很多是 1.7

    公司内部使用 1.7 的 jdk,开源版本并没有完全改过来,1.7 的代码后续会逐渐修改为 1.8 的实现。

  • 前端有的地方似乎有点不那么好看,实现的似乎也不太棒

    所有的前端代码都是后端同学兼职完成,欢迎各位前端大牛贡献相关代码。

技术支持

qq 群:

QQ

Screenshots

通过命令行界面查看日志,使用 arthas 和 vjtools 的各项功能 console

在线 debug,在线应用调试神器 debug

线程级 cpu 监控,帮助你掌握线程级 cpu 使用率 jstack_dump

在 web 界面查看 JVM 运行信息,以及各种其它信息 jvm

动态给方法添加监控 monitor

线程 dump thread_dump