arthas: 1.1.0 安装使用



0. 理论

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

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

arthas支持web console,但是那个web页面只能一次访问单台机器,为了方便管理,最好是使用arthas tunnel server。

arthas tunnel server的工作原理是:

browser <-> arthas tunnel server <-> arthas tunnel client <-> arthas agent

PS: 这样我们就可以通过一个固定的web界面,通过输入不同的agent id,然后来排查不同服务器上的jvm了。

1. 启动arthas tunnel server

ARTHAS_TUNNEL_SERVER_DIR=/usr/local/arthas-tunnel-server

[[ -d ${ARTHAS_TUNNEL_SERVER_DIR} ]] || mkdir -p ${ARTHAS_TUNNEL_SERVER_DIR}

# download arthas-tunnel-server
wget https://github.com/alibaba/arthas/releases/download/arthas-all-3.1.7/arthas-tunnel-server-3.1.7.jar \
  -o ${ARTHAS_TUNNEL_SERVER_DIR}/arthas-tunnel-server.jar

cat << EOF > ${ARTHAS_TUNNEL_SERVER_DIR}/asts.sh
nohup java -jar ${ARTHAS_TUNNEL_SERVER_DIR}//arthas-tunnel-server.jar &
EOF

cd ${ARTHAS_TUNNEL_SERVER_DIR} && sh ${ARTHAS_TUNNEL_SERVER_DIR}/asts.sh

2. 启动arthas agent

JAVA_HOME=/usr/java/jdk1.7.0_79
ARTHAS_AGENT_DIR=/usr/local/arthas-agent
ARTHAS_TUNNEL_SERVER=127.0.0.1

[[ -d ${ARTHAS_AGENT_DIR} ]] || mkdir -p ${ARTHAS_AGENT_DIR}
cd ${ARTHAS_AGENT_DIR} && wget https://alibaba.github.io/arthas/arthas-boot.jar

# start agent
cat << EOF > ${ARTHAS_AGENT_DIR}/startup.sh
sudo -u tomcat -EH ${JAVA_HOME}/bin/java -jar ${ARTHAS_AGENT_DIR}/arthas-boot.jar --tunnel-server 'ws://${ARTHAS_TUNNEL_SERVER}:7777/ws'
EOF

sh ${ARTHAS_AGENT_DIR}/startup.sh