概要
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
通过 Arthas Tunnel Server/Client 来远程管理/连接多个 Agent。
安装配置
- 项目pom中引入Arthas组件,版本参考:Maven Central - Search
<dependency>
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-spring-boot-starter</artifactId>
<version>3.6.9</version>
</dependency>
- 基本配置
arthas: agent-id: cipher-server-local #自定义服务在arthas中的名称 tunnel-server: ws://192.168.11.160:7777/ws # 远程管理平台arthas tunnel的地址 app-name: lizz-test # 当前服务名,如果不配置agent-id会自动生成服务名加下划线随机值的agent-id
- 启动服务
- 访问服务Arthas Web Console对服务进行Arthas相关操作,默认地址端口8563;正式使用一般使用Arthas Tunnel进行远程统一管理,参考后续逻辑。
使用命令
参考官方:命令列表 | arthas
dashboard-查看服务运行汇总面板
# 每10秒输出一次面板数据,一共输出2次
dashboard -i 10000 -n 2
- -i :展示数据刷新间隔时间,单位ms,默认5000ms
- -n : 展现次数,默认不停止
输出结果
- ID: Java 级别的线程 ID,注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。
- NAME: 线程名
- GROUP: 线程组名,主线程
- PRIORITY: 线程优先级, 1~10 之间的数字,越大表示优先级越高
- STATE: 线程的状态
- CPU%: 线程的 cpu 使用率。比如采样间隔 1000ms,某个线程的增量 cpu 时间为 100ms,则 cpu 使用率=100/1000=10%
- DELTA_TIME: 上次采样之后线程运行增量 CPU 时间,数据格式为
秒
- TIME: 线程运行总 CPU 时间,数据格式为
分:秒
- INTERRUPTED: 线程当前的中断位状态
- DAEMON: 是否是 daemon 线程
- Memory :jvm 内存分区
- used:已使用的大小
- total :总量
- max:最大使用量
- usage:已使用占比,used/total
- GC : 垃圾回收类型、次数和时间
- Runtime:运行环境
查看当前 JVM 信息
$ jvm
远程统一管理工具Arthas Tunnel
下载服务jar
wget https://github.com/alibaba/arthas/releases/arthas-tunnel-server-3.6.9-fatjar.jar
移动到指定目录下启动
- 默认端口8080
nohup java -jar arthas-tunnel-server-3.6.9-fatjar.jar --server.port=8071 &
使用Arthas Tunnel
- 访问127.0.0.1:8071地址,在AgentId框中输入需要操作了服务id,再点击Connect按钮即可远程链接到远程服务Arthas控制台中。
- 如需切换服务器,需要先Disconnect断开后重连。
查看AgentId
查看服务链接信息127.0.0.1:8071/actuator/arthas,登录名arthas,密码在Arthas Tunnel启动日志中
{
"clientConnections": {},
"version": "3.6.9",
"properties": {
"server": {
"host": "0.0.0.0",
"port": 7777,
"ssl": false,
"path": "/ws",
"clientConnectHost": "192.168.11.160"
},
"embeddedRedis": null,
"enableDetailPages": true,
"enableIframeSupport": true
},
"agents": {
"cipher-encode_1JRGW8SBNAQOW5DIPVF2": { # 远程服务agentid
"host": "10.0.1.184",
"port": 57464,
"arthasVersion": "3.6.9"
}
}
}
服务列表操作页面
- arthas.enable-detail-pages=true 开启展示页面
- 由于这个页面没有权限管理,谨慎使用
nohup java -jar arthas-tunnel-server-3.6.9-fatjar.jar --server.port=8071 --arthas.enable-detail-pages=true &
也可以通过127.0.0.1:8071/apps.html查看服务列表和服务节点