拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Arthas 安装与启动全指南:快速安装、全量安装、手动安装与 rpm/deb 部署详解

Arthas 安装与启动全指南快速安装、全量安装、手动安装与 rpm/deb 部署详解【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthas本文是 Alibaba Java Diagnostic Tool Arthas阿里巴巴 Java 诊断利器的安装部署专题指南覆盖arthas-boot快速启动、as.sh一键脚本、全量包解压、手动本地安装、rpm/deb 系统包、Windows 批处理与离线文档等全部官方安装路径并结合仓库内 bin/as.sh、boot 等源码剖析脚本的默认端口、参数解析与自动更新机制。读完本文你可以针对任意 Linux/Unix/Mac/Windows 环境选择最合适的安装方式独立完成 Arthas 的安装、启动、远程连接与卸载。安装方式总览Arthas 提供了多种安装与启动方式适用于不同场景官方推荐使用arthas-boot或as.sh脚本。所有方式的本质都是把 Arthas 的运行时arthas-core.jar、arthas-agent.jar、arthas-client.jar、arthas-spy.jar等准备好然后 attach 到目标 Java 进程。从 packaging/src/main/assembly/assembly.xml 可以看出一个完整发行包包含文件来源模块作用arthas-boot.jarboot启动引导器可在线下载 Arthas 并 attacharthas-core.jarcore核心引擎负责 attach 与命令执行arthas-agent.jaragentJava Agent 实现arthas-client.jarclient命令行客户端Telnet 控制台arthas-spy.jarspy埋点 SPI 支持math-game.jarmath-game官方演示程序as.sh/as.bat/as-service.batbin启动脚本install-local.shbin本地安装脚本async-profiler/lib—性能剖析原生库下面按官方文档 install-detail.md 的脉络逐一展开。快速安装使用 arthas-boot推荐arthas-boot是 Arthas 的启动引导器它会自动探测本机 Java 进程、下载对应版本的 Arthas 到本地缓存~/.arthas/lib并完成 attach。下载arthas-boot.jar后用java -jar启动即可curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar执行后会出现本机 Java 进程列表输入序号回车即可进入 Arthas 交互界面。打印帮助信息java -jar arthas-boot.jar -h使用 aliyun 镜像加速下载如果下载速度比较慢可以使用 aliyun 的镜像java -jar arthas-boot.jar --repo-mirror aliyun从 Bootstrap.java 的源码注释可以看到repoMirror参数的默认逻辑是当系统时区为0800时默认使用aliyun否则使用center。也就是说国内环境不加参数也会自动走阿里云镜像与 bin/as.sh 中REPO_MIRROR的判定逻辑保持一致。arthas-boot还支持众多参数与as.sh基本一一对应包括--telnet-port默认 3658、--http-port默认 8563、--target-ip默认 127.0.0.1、--session-timeout默认 10800 秒、--use-version、--versions、--attach-only、--tunnel-server、--agent-id、--username/--password、-c执行命令、-f批量脚本等详见 Bootstrap.java 的 Description。快速安装使用 as.sh 一键脚本Arthas 支持在 Linux/Unix/Mac 等平台上一键安装请复制以下内容并粘贴到命令行中敲回车执行即可curl -L https://arthas.aliyun.com/install.sh | sh上述命令会下载启动脚本文件as.sh到当前目录。从仓库内的 bin/install.sh 可以看到它的实现它先下载远端as.sh到临时文件./as.sh.$$然后覆盖写成本地as.sh并赋予可执行权限chmod x下载超时默认为 60 秒。你可以把as.sh放到任何地方或将其加入到$PATH中。直接在 shell 下面执行./as.sh就会进入交互界面也可以执行./as.sh -h获取更多参数信息./as.sh -h执行-h时脚本会打印完整的用法说明并顺带列出当前机器上可 attach 的 Java 进程见 as.sh 的 usage 函数。全量安装如果你需要离线环境、固定版本或完整发行包可以下载最新版本的 Arthas 全量压缩包zip解压后在文件夹里有arthas-boot.jar直接用java -jar的方式启动java -jar arthas-boot.jar打印帮助信息java -jar arthas-boot.jar -h全量包的内容即上文 assembly.xml 所列除了arthas-boot.jar外还包含as.sh、as.bat、install-local.sh、math-game.jar以及async-profiler原生库等解压后即可完整使用所有启动方式。手动安装手动安装适合离线或需要精确控制安装位置如安装到目标 Java 进程所属用户的~/.arthas下的场景完整步骤见 手动安装文档要点如下下载最新版本的全量压缩包解压缩unzip arthas-packaging-bin.zip安装 Arthas——安装之前最好把所有老版本的 Arthas 全部删掉并切换到目标 Java 进程所属用户例如adminsudo su admin rm -rf /home/admin/.arthas/lib/* cd arthas ./install-local.shinstall-local.sh的逻辑见 bin/install-local.sh是把当前目录下的所有 jar 复制到${HOME}/.arthas/lib/${ARTHAS_VERSION}/arthas/并给as.sh加执行权限这也是as.sh启动时查找本地 Arthas 的默认位置ARTHAS_LIB_DIR${HOME}/.arthas/lib见 as.sh。注意这里需要根据你要诊断的 Java 进程的所属用户进行切换否则 attach 时会因权限不匹配而失败详见后文sudo 支持一节。启动 Arthas——启动之前请确保老版本的 Arthas 已经执行过stop命令退出./as.sh以脚本方式启动 as.sh / as.batLinux/Unix/Mac 平台执行./as.sh或as.sh即可进入交互界面Windows 平台下载解压后bin目录下有as.bat。此脚本目前只接受一个参数 pid即只能诊断本机上的 Java 进程as.bat pid使用以下命令诊断 Windows 服务模式运行的 Java 进程--interact打开服务 UI 交互模式方便诊断问题as-service.bat -port port as-service.bat -pid pid as-service.bat -pid pid --interact清理 Arthas Windows 服务执行以下命令as-service.bat -remove通过 rpm/deb 系统包安装在项目 releases 页面可以下载 rpm/deb 系统包适合在受管控的服务器环境中集中安装。安装 debsudo dpkg -i arthas*.deb安装 rpmsudo rpm -i arthas*.rpmdeb/rpm 安装后的用法安装完成后as.sh会被安装到系统路径可以直接执行as.shas.sh 启动参数详解as.sh是 Arthas 功能最完整的启动脚本仓库内的 bin/as.sh 源码详细定义了全部参数及其默认值这里整理成表参数默认值说明pid—目标 Java 进程 ID也支持pidip:port形式--target-ip127.0.0.1Arthas Server 侦听的地址--telnet-port3658Telnet 端口设为 -1 可关闭--http-port8563HTTP 端口设为 -1 可关闭--session-timeout108003 小时Telnet 会话超时秒数--arthas-home自动探测指定 Arthas 安装目录--use-version最新使用指定版本不存在则自动下载--versions—列出本地和远端 Arthas 版本--repo-mirrorcenter/aliyun下载镜像0800时区默认aliyun--attach-onlyfalse只 attach 不连接控制台--debug-attachfalse以 JPDA 调试模式启动 attach默认端口 8888--tunnel-server—远程 Tunnel Server 地址如ws://192.168.10.11:7777/ws--agent-id—指定 Agent ID用于 tunnel 场景--app-name—指定应用名--username/--password—控制台登录认证--disabled-commands—禁用指定命令逗号分隔如stop,dump--command-locations—外部命令 jar 位置文件或目录逗号分隔--select—按 classname 或 jar 文件名选择目标进程-c, --command—执行命令多条用;分隔配合 pid 使用-f, --batch-file—执行批处理文件--height/--width终端自动arthas-client 终端尺寸-v, --verbosefalse打印调试信息交互模式启动直接执行./as.sh会进入交互模式脚本先通过jps -l失败时回退到ps aux | grep java列出本机 Java 进程并智能推荐 Tomcatorg.apache.catalina.startup.Bootstrap或 Pandoracom.taobao.pandora.boot.loader.SarLauncher进程见 as.sh 的进程选择逻辑./as.sh运行效果类似Found existing java process, please choose one and input the serial number of the process, eg: 1 . Then hit ENTER. [1]: 3088 org.jetbrains.idea.maven.server.RemoteMavenServer * [2]: 12872 org.apache.catalina.startup.Bootstrap [3]: 2455 Attaching to 12872... ,---. ,------. ,--------.,--. ,--. ,---. ,---. / O \ | .--. --. .--| -- | / O \ .- | .-. || --. | | | .--. || .-. |. -. | | | || |\ \ | | | | | || | | |.- | -- ---- -- -- -- ---- ------- $非交互模式启动./as.sh PID[IP:PORT]参数说明PID目标 Java 进程 ID请确保执行当前命令的用户必须有足够的权限操作对应的 Java 进程IPArthas Server 侦听的地址默认值是127.0.0.1。Arthas 允许多个用户同时访问并且各自的命令不会相互干扰执行PORT目标服务器 Arthas Server 的端口号默认的端口号是 3658。示例如果不指定 IP 和 PORT默认是 127.0.0.1 和 3658./as.sh 12345上述命令等价于./as.sh 12345127.0.0.1:3658从 as.sh 的参数解析 可以看到脚本会把pidip:port拆解为 PID、target-ip、telnet-port、http-port 四个部分。远程诊断服务器启动 Arthas Server 后其他人可以使用 telnet 远程连接上去进行进程诊断例如telnet 192.168.1.119 3658sudo 支持成熟的线上管理环境一般都不会直接开放 JVM 部署用户权限给你而是通过 sudo-list 来控制和监控用户的越权操作。由于as.sh脚本中会对当前用户的环境变量产生感知所以需要加上-H参数sudo -u admin -H ./as.sh 12345从 as.sh 的 sanity_check 函数 可以看到脚本会校验当前用户与目标进程属主是否一致root 除外如果不一致会提示使用sudo su user ./as.sh或sudo -u user -EH ./as.sh重新执行。手动拼接命令行启动如果启动遇到问题可以尝试手动拼接出命令行参数来启动此方式也帮助我们理解as.sh内部到底做了什么。查找目标 JVM 的 java 文件路径。在 Linux/Mac 上执行ps aux | grep java在 Windows 上可以通过进程管理器查看。假设是/opt/jdk1.8/bin/java。拼接出命令行/opt/jdk1.8/bin/java -Xbootclasspath/a:/opt/jdk1.8/lib/tools.jar \ -jar /tmp/arthas-packaging/arthas-core.jar \ -pid 15146 \ -target-ip 127.0.0.1 -telnet-port 3658 -http-port 8563 \ -core /tmp/arthas-packaging/arthas-core.jar \ -agent /tmp/arthas-packaging/arthas/arthas-agent.jar命令行分几部分组成-Xbootclasspath增加 tools.jarJDK 8 及以下版本必需as.sh在reset_for_env中也会自动寻找 tools.jar 并设置BOOT_CLASSPATH-jar /tmp/arthas-packaging/arthas-core.jar指定 main 函数入口-pid 15146指定目标 java 进程 ID-target-ip 127.0.0.1指定 IP-telnet-port 3658 -http-port 8563指定 telnet 和 http 端口-core /tmp/arthas-packaging/arthas-core.jar -agent /tmp/arthas-packaging/arthas/arthas-agent.jar指定 core/agent jar 包。如果是 JDK 9/10/11 以上的版本不需要指定tools.jar直接去掉-Xbootclasspath的配置即可。启动日志输出在~/logs/arthas/arthas.log里attach 失败时可优先查看该日志排查。attach 成功之后使用 telnet 连接telnet 127.0.0.1 3658离线帮助文档在无外网的隔离环境中除了全量安装包外还可以下载最新版本的离线文档包与安装包同源发布用于查阅命令手册、配置说明与 FAQ。卸载Linux/Unix/Mac 平台删除下面文件rm -rf ~/.arthas/ rm -rf ~/logs/arthas~/.arthas/保存了 Arthas 各版本的 lib~/.arthas/lib/version/arthas~/logs/arthas/保存运行日志。Windows 平台直接删除 user home 下面的.arthas和logs/arthas目录。版本与 JDK 兼容性注意事项Arthas 4 支持 JDK 8如需诊断 jdk 6/7 应用请使用 Arthas 3 版本该提示也写在了 as.sh 的 usage 与 Bootstrap.java 的 Description 中。另外as.sh只支持 bash不支持 posix sh如果遇到Syntax error: ( unexpected之类的报错请确认当前 shell 是 bash。相关文档与资源安装详情本文档源手动安装完整步骤启动 Arthas交互/非交互/sudo/WindowsDocker 方式安装使用命令手册快速开始【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门