写在前面
- 最近项目组上针对服务器的资源消耗,特别是java这块的堆栈内存,JVM指数(新生代,老年代,存活区区域…)内存消耗之类的需要进行监控(当然主要的还是运维这块的对服务报警监控),以便项目成员能够及时找出项目上回出现的问题,于是引入了阿里开源的阿尔萨斯工具(Arthas)。
什么是Arthas,它能帮我们做什么
Arthas 是基于 Greys 进行二次开发的全新在线诊断工具,利用Java6的Instrumentation特性,动态增强你所指定的类,获取你想要到的信息, 采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,让你在定位、分析诊断问题时看每一个操作都看起来是那么的 666,它的大致作用列举如下:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在预发 debug 一下,难道只能通过加日志再重新预发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现,怎么办?
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到容器和中间件的实时运行状态?
Arthas的安装
- 首先我们先看下Arthas的github官方地址,里面有对Arthas的一些描述
- Arthas安装包下载链接
- 步骤