概要

        Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

        通过 Arthas Tunnel Server/Client 来远程管理/连接多个 Agent。

安装配置

        <dependency>
            <groupId>com.taobao.arthas</groupId>
            <artifactId>arthas-spring-boot-starter</artifactId>
            <version>3.6.9</version>
        </dependency>
  • 接入远程Tunnel配置(选配)
    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相关操作,默认地址端口http://127.0.0.1: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查看服务列表和服务节点

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐