Skip the Arthas CLI: Get Java Online Diagnosis in 5 Minutes with an Open‑Source GUI
Arthas Eyes packages Alibaba’s Arthas into a browser‑based GUI, using a Python FastAPI backend and a Vue 3 front‑end, allowing developers to attach to local or remote Java processes, visualize memory, GC, threads, trace calls, view flame graphs, and perform diagnostics within five minutes without memorizing CLI commands.
Arthas Eyes – browser‑based GUI for Arthas
Arthas Eyes wraps Alibaba’s open‑source Arthas diagnostic tool in a web interface. A local Python 3.11 backend communicates with Arthas via its HTTP API, while the front‑end built with Vue 3, Vite, Naive UI, ECharts and Pinia provides visual panels for selecting a Java process and executing diagnostics.
Local diagnosis features
Process management – automatic scanning of local Java processes and one‑click attach.
Dashboard – real‑time display of memory, GC and thread information.
Invocation tracing – watch variables, trace call chains, stack inspection.
Method monitoring – automatic statistics of call count, success rate and response time.
Time Tunnel (TT) – record method calls and replay them.
Performance analysis – CPU and memory flame graphs rendered in the browser.
Class/Method view – Jad decompilation, class search (SC) and method search (SM).
Remote diagnosis (Tunnel mode)
In production environments where direct SSH access is unavailable, Arthas Eyes can connect to an Arthas Tunnel Server. The server proxies WebSocket connections to remote agents, allowing local GUI operations to affect remote JVMs.
Technical architecture
Front‑end: Vue 3 + Vite + Naive UI + ECharts + Pinia.
Back‑end: Python 3.11 + FastAPI + HTTPx + WebSockets.
Diagnosis engine: Arthas HTTP API for local communication; Arthas Tunnel WebSocket for remote communication.
The backend exposes HTTP endpoints via FastAPI, invokes the Arthas HTTP API with HTTPx, and forwards Tunnel protocol messages over WebSockets. Local communication uses Arthas’s HTTP interface; remote communication passes through the Tunnel Server’s WebSocket proxy, where the backend parses the protocol and structures results.
Quick start (≈5 minutes)
Prepare the environment: Python 3.11+, Node.js 18+, Java 8+ (target process).
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python run.py # defaults to http://0.0.0.0:8000Start the front‑end:
cd frontend
npm install
npm run dev # defaults to http://localhost:5173Open the browser at http://localhost:5173, select a Java process, and begin diagnosis. The project bundles arthas-boot.jar and arthas-tunnel-server-4.2.2-fatjar.jar, so no separate downloads are required.
Remote diagnosis workflow
Start the Tunnel Server:
java -jar arthas/arthas-tunnel-server-4.2.2-fatjar.jarRegister the agent on the target machine:
java -jar arthas-boot.jar \
--tunnel-server ws://tunnel-server-ip:7777/ws \
--app-name your-appConfigure the Tunnel address in the GUI; remote diagnosis becomes immediately available.
Key advantages
Lower entry barrier – diagnostics are performed with mouse clicks instead of memorizing Arthas commands.
Integrated visualizations – call graphs, method statistics and flame graphs are available in the browser.
Support for both local and remote JVMs via Tunnel mode.
Open‑source codebase (Python and Vue) is clear and extensible.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
xkx's Tech General Store
Code with the left hand, enjoy with the right; a keystroke sweeps away worries.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
