Arthas 介绍

Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。

当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  • 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  • 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  • 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  • 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  • 是否有一个全局视角来查看系统的运行状况?
  • 有什么办法可以监控到JVM的实时运行状态?

Arthas采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

在docker中使用

目前我们使用的镜像 FROM openjdk:8u181-jdk-slim
openjdk:8u181-jdk-slim 的Dockefile 中看到, 此镜像基于 debian:stretch-slim

导入apt-get的源

使用163提供的源,写入sources.list中:

1
2
3
4
5
6
7
8
deb http://mirrors.163.com/debian/  stretch main non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib

拷贝进docker镜像:

docker cp sources.list name:/etc/apt/sources.list

进入docker容器bash:

docker exec -it name bash

容器中更新源:

apt-get update

安装Arthas依赖的工具:

apt-get -y install curl procps

安装Arthas:

curl -L https://alibaba.github.io/arthas/install.sh | sh

启动Arthas:

./as.sh

成功运行Arthas
成功运行Arthas

建议

在打包容器的时候,将apt-get的源更新好 安装好curl procps,以及把Arthas的shell脚本add进去。