相信大家一定遇到过这种非常蛋疼的情况:
服务是集群部署,想用 arthas,就得一个一个连接上去,然后命令也是一条一条的执行。每次看个结果还得好几个命令行来回跳,非常难受有没有。

为了应对这个问题,在这里给大家推荐一款开源软件:
废话不多说,直接上图:

在这里,我们连接了两个 MathGame 并且执行了一条 stack 命令,在左侧可以看到我们执行的命令列表,点击后就可以在右边看到每个 JVM 的 arthas 响应。
点击眼睛图标后,会弹出一个悬浮框查看具体的 arthas 响应。
平常由于负载均衡的存在,每次可能只会只有一个 JVM 有响应,当只有一个响应时,也可以清晰的看到结果:

你这个执行命令这么方便,但是 JVM 连接起来估计也很麻烦吧?
错,你只需要在页面上点几下,然后就可以交给后台自动连接了:

它会自动上传所需要的工具包(例如 arthas、jattach等),然后执行命令连接,我们只需要等着它自己连接完就可以了!
软件介绍
时序图:

特点:
- 无需 jdk 环境也可以连接
- 无需容器额外暴露端口
- 对服务零侵入,全程自动化,拥有 arthas 的全生命周期管理
- 支持 java8、java11、java17、java25(理论支持所有 8+ 版本,但只有这四个 LTS 版本进行了测试)
- 具备权限管理,支持限制用户可以执行的命令
- 支持
SSH + 本地JVM/SSH + Docker/Kubernetes - 服务零中间件依赖,支持开箱即用(数据库默认使用 SQLite,多人使用时推荐切换到 PostgreSQL)
可以直接在线体验已有演示环境:
用户名密码:public / P@ssw0rd
其它特性
热更新

支持在页面上传 class 文件进行热更新,再也不用手动一个一个传了!
大模型诊断

服务已接入 AI,支持通过大模型诊断/询问
反编译

获取近似代码编译器的体验,帮我我们更好的观察代码。
Dashboard

更直观的 dashboard,帮助你快速定位系统问题。
快速启动
shell
# No stdout under prod profiles.
docker run -t --rm -p 8080:8080 vudsen/spectre:latest java -Dspring.profiles.active=dev -jar spectre.jar
启动后访问 http://localhost:8080,默认用户名和密码是 admin / P@ssw0rd。
项目地址
欢迎大家提意见,能点个 star 就是对我最大的支持了!