Arthas 使用
别再担心线上 Java 业务出问题怎么办了,Arthas
帮助你解决以下常见问题:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到 JVM 的实时运行状态?
- 怎么快速定位应用的热点,生成火焰图?
- 怎样直接从 JVM 内查找某个类的实例?
Arthas(阿尔萨斯)是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
Arthas 采用命令行交互模式,同时提供丰富的 Tab
自动补全功能,进一步方便进行问题的定位和诊断。
同时 Arthas 也支持通过 Web Console 进入命令行交互模式,这适用于开发人员没有服务器权限时通过 Arthas Web Console 诊断业务。
Arthas 在 Rainbond 上集成
1. 插件集成
通过 Rainbond 插件的机制,从 Rainbond 开源应用商店一键安装 Arthas 插件并在组件中开通,组件启动时会自动下载 arthas-agent.jar
结合环境变量配置使用 javaagent
方式启动。
2. Arthas Tunnel 集成
当我们的微服务业务有 10+,这时通过 Arthas 去诊断就会比较麻烦,开发人员没有服务器的权限并且通过 Web Console 访问的话也会由于访问地址太多导致特别混乱。这时就需要通过 Arthas Tunnel Server/Client 来远程管理/连接多个 Agent。
Arthas Agent 会通过 WS 注册到 Arthas Tunnel 中,实现统一管理。
Arthas Tunnel 可通过 Rainbond 开源应用商店一键安 装。
3. Arthas Web Console
对于 Spring Boot 应用则无需通过 Arthas Tunnel 访问 Web Console,在组件内添加8563端口即可访问 Web Console。(注意:域名访问需开启 Websocket 支持
使用Arthas诊断Rainbond上的Spring Boot应用
1. 部署 Spring Boot 应用
团队 -> 新增 -> 基于应用商店创建组件 -> 在应用商店中搜索 若依SpringBoot
进行一键部署。
2. 安装 Arthas Java Agent 插件并配置
安装插件
团队 -> 插件 -> 从应用商店安装插件 -> 在应用商店中搜索 Arthas-Agent
进行一键部署。
开通插件
为ruoyi-admin
开通 Arthas Agent 插件,在组件内 -> 插件 -> 未开通 -> 开通插件。
环境变量配置
为 ruoyi-admin
组件配置环境变量,在组件内 -> 环境 变量 -> 添加变量。
变量名 | 变量值 |
---|---|
JAVA_OPTS | -javaagent:/arthas/arthas-agent.jar |
ARTHAS_APP_NAME | ruoyi-admin |
ARTHAS_AGENT_ID | ruoyi-admin |
2.4 添加端口并更新
为 ruoyi-admin
组件添加 8563 端口并打开对外服务,更新组件完成后可通过默认域名访问 Web Console。
使用Arthas诊断Rainbond上的SpringCloud应用
使用 Arthas 诊断部署在 Rainbond 上的微服务 Spring Cloud Pig,并通过 Arthas Tunnel 统一管理 Arthas agent。
1. 部署 Spring Cloud Pig
团队 -> 新增 -> 基于应用商店创建组件 -> 在应用商店中搜索 SpringCloud-Pig
进行一键部署。
2. 部署 Arthas Tunnel
团队 -> 新增 -> 基于应用商店创建组件 -> 在应用商店中搜索 Arthas-Tunnel
进行 一键部署。
3. 安装 Arthas Agent 插件并配置
安装插件
团队 -> 插件 -> 从应用商店安装插件 -> 在应用商店中搜索 Arthas-Agent
进行一键部署。
开通插件
为每个微服务组件都开通插件,进入微服务组件 -> 插件 -> 开通插件 Arthas-Agent
。
配置环境变量
为每个微服务组件配置环境变量,在组件内 -> 环境变量 -> 添加变量。
变量名 | 变量值 | 说明 |
---|---|---|
JAVA_OPTS | -javaagent:/arthas/arthas-agent.jar | JAVA 启动参数 |
ARTHAS_APP_NAME | register | arthas app name,根据实际情况修改 |
ARTHAS_AGENT_ID | register | arthas agent ID 不可与其他 ID相同,是唯一的 |
配置依赖关系
将所有微服务组件依赖至 arthas tunnel
,应用视图切换到编排模式进行拖拉拽。
批量更新
更新/重启所有微服务相关组件。可在 列表
中批量操作。