One CLI for all JVM diagnostics. 55 commands, zero agent required, works on Java 11+. GC analysis, health diagnosis, flame graphs, interactive TUI โ the free alternative to GCEasy + jcmd + VisualVM combined.
# Install (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/rlaope/argus/master/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/rlaope/argus/master/install.ps1 | iex
# Try it now
argus ps # List JVM processes
argus doctor <pid> # One-click health diagnosis
argus tui # Interactive terminal UI| Argus | Arthas | VisualVM | jcmd | GCEasy | |
|---|---|---|---|---|---|
| CLI diagnostic | โ 55 cmds | โ | โ GUI | โ limited | โ |
| GC log analysis | โ free | โ | โ | โ | ๐ฐ paid |
| Health diagnosis | โ doctor | โ | โ | โ | โ |
| Interactive TUI | โ k9s-style | โ | โ | โ | โ |
| Virtual Threads | โ JFR-based | โ | โ | โ | โ |
| CI/CD gate | โ exit codes | โ | โ | โ | โ |
| Prometheus/Grafana | โ native | โ | โ | โ | โ |
| K8s Helm chart | โ | โ | โ | โ | โ |
| Web dashboard | โ real-time | tunnel | โ | โ | โ web |
| i18n | ๐ en/ko/ja/zh | ๐จ๐ณ zh | ๐ฌ๐ง en | ๐ฌ๐ง en | ๐ฌ๐ง en |
| Cost | Free | Free | Free | Free | Paid |
Arthas = debugging (bytecode, tracing). Argus = observability (monitoring, diagnosis, metrics). They complement each other.
$ argus doctor 39113
โญโ Health Diagnosis โโ pid:39113 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ
โ โ
Heap usage normal 41M / 256M (16%) โ
โ โ
GC overhead acceptable 0.3% โ
โ โ
No deadlocks detected โ
โ โ
Thread count normal 29 threads โ
โ โ Metaspace near limit 96.5% โ consider -XX:MaxMetaspaceSize โ
โ โ Old Gen elevated 41.8% โ monitor for promotion pressure โ
โ โ
โ Overall: WARN โ 2 recommendations โ
โ โ
โ Tuning Tips โ
โ โ Add -XX:MaxMetaspaceSize=256m to prevent unlimited growth โ
โ โ Run argus gclog <file> to analyze GC pressure over time โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
$ argus gclog gc.log
โญโ GC Log Analysis โโ gc.log โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ
โ Collector: G1GC โ
โ Duration: 3h 42m (13,320 events) โ
โ โ
โ Pause Distribution โ
โ p50 12ms โโโโโโโโโโ โ
โ p95 48ms โโโโโโโโโโ โ
โ p99 124ms โโโโโโโโโโ โ
โ max 311ms โโโโโโโโโโ โ Full GC detected โ
โ โ
โ GC Overhead: 2.1% (healthy < 5%) โ
โ Allocation Rate: 142 MB/s โ
โ Full GC Count: 3 (potential memory pressure) โ
โ โ
โ Recommendations โ
โ โ Increase -Xmx to reduce Full GC frequency โ
โ โ Consider -XX:G1HeapRegionSize=16m for large heap โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
$ argus watch 39113
โญโ JVM Watch โโ pid:39113 โโ OpenJDK 21.0.9 โโ refreshing every 2s โโโโโโโโโโโโฎ
โ โ
โ Heap [โโโโโโโโโโโโโโโโ] 41M / 256M (16%) โ +2M/s โ
โ Metaspace [โโโโโโโโโโโโโโโโโโโ] 247M / 256M (96%) โ
โ โ
โ CPU [โโโโโโโโโโโโโโโโ] 12% GC overhead: 0.3% โ
โ โ
โ Threads: 29 total (RUNNABLE:11 WAITING:13 TIMED_WAITING:5) โ
โ YGC: 18 (0.163s) FGC: 2 (0.215s) Uptime: 57m 5s โ
โ โ
โ Top Heap Objects โ
โ 1. byte[] 111.0K instances 16M โ
โ 2. java.lang.String 107.2K instances 2M โ
โ 3. java.lang.Class 18.9K instances 2M โ
โ โ
โ โ Metaspace at 96% โ near limit โ
โ โ
โ [q]uit [r]efresh [h]eap [t]hreads [g]c โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
$ argus tui
โญโ Argus TUI โโโโโโโโโโโโโโโโโโโโโโโโโโโ [R]ead [W]rite [?]help [q]quit โโโโฎ
โ โ
โ JVM Processes โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ PID Name Java Heap Uptime โ
โ 39113 โถ com.example.MyApp 21.0.9 41M/256M 57m โ
โ 29286 org.gradle.launcher 17.0.8 88M/512M 12m โ
โ 11042 io.confluent.kafka.Server 11.0.21 312M/1G 3h 14m โ
โ โ
โ Commands โ Output โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ doctor Health diagnosis โ โ
Heap OK โ Metaspace 96% โ
โ heap Memory breakdown โ 41M / 256M (16%) โ
โ gc GC statistics โ YGC:18 FGC:2 overhead:0.3% โ
โ threads Thread summary โ 29 threads, 0 deadlocks โ
โ profile CPU profiling โ โ
โ flame Flame graph (HTML) โ โ
โ โ
โ [โโ] select process [tab] switch panel [enter] run command โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Additional showcase:
$ argus report 39113
โญโ JVM Report โโ pid:39113 โโ source:auto โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ
โ โธ JVM Info โ
โ 39113: OpenJDK 64-Bit Server VM version 21.0.9 Uptime: 57m 5s โ
โ โ
โ โธ Memory โ
โ Heap [โโโโโโโโโโโโโโโโ] 41M / 256M (16%) โ
โ Free 215M โ
โ โ
โ โธ GC โ
โ S0: 0% S1: 0% Eden: 0% Old: 42% Meta: 97% โ
โ โ
โ โธ Threads โ
โ Total: 29 Virtual: 0 Platform: 29 โ
โ TIMED_WAITING: 5 WAITING: 13 RUNNABLE: 11 โ
โ โ
โ โธ Top Heap Objects โ
โ 1. byte[] 111.0K instances 16M โ
โ 2. java.lang.String 107.2K instances 2M โ
โ 3. java.lang.Class 18.9K instances 2M โ
โ โ
โ โธ Warnings โ
โ โ Metaspace at 97% โ near limit โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
All 55 commands. No agent needed. Works on any running JVM.
Process & System
| Command | Description |
|---|---|
argus ps |
List running JVM processes (with Java version, uptime) |
argus info <pid> |
JVM information, flags, and CPU utilization |
argus env <pid> |
JVM launch environment |
argus sysprops <pid> |
System properties (--filter supported) |
argus vmflag <pid> |
VM flags (--filter, --set supported) |
argus vmset <pid> Flag=val |
Set VM flag at runtime |
argus vmlog <pid> |
JVM unified logging control |
argus jmx <pid> [cmd] |
JMX agent control |
Memory & GC
| Command | Description |
|---|---|
argus heap <pid> |
Heap memory with detailed pool breakdown |
argus histo <pid> |
Heap object histogram |
argus gc <pid> |
GC statistics (collectors, pauses, overhead) |
argus gcutil <pid> |
GC generation utilization (jstat-style) |
argus gccause <pid> |
GC cause with utilization stats |
argus gcnew <pid> |
Young generation GC detail |
argus gcrun <pid> |
Trigger System.gc() remotely |
argus metaspace <pid> |
Detailed metaspace breakdown |
argus nmt <pid> |
Native memory tracking |
argus buffers <pid> |
NIO buffer pool statistics (direct, mapped) |
argus finalizer <pid> |
Finalizer queue status |
argus diff <pid> [interval] |
Heap snapshot diff (leak detection) |
argus heapdump <pid> |
Generate heap dump (with STW warning) |
argus gclog <file> |
GC log analysis โ pause distribution, tuning tips (GCEasy alternative) |
Threads
| Command | Description |
|---|---|
argus threads <pid> |
Thread dump summary (daemon, peak counts) |
argus threaddump <pid> |
Full thread dump with stack traces |
argus deadlock <pid> |
Detect Java-level deadlocks |
argus pool <pid> |
Thread pool analysis |
Runtime & Class Loading
| Command | Description |
|---|---|
argus classloader <pid> |
Class loader hierarchy |
argus classstat <pid> |
Class loading statistics |
argus sc <pid> <pattern> |
Search loaded classes by glob pattern |
argus compiler <pid> |
JIT compiler and code cache stats |
argus compilerqueue <pid> |
JIT compilation queue |
argus stringtable <pid> |
Interned string table statistics |
argus symboltable <pid> |
Symbol table statistics |
argus dynlibs <pid> |
Loaded native libraries |
Profiling & Diagnostics
| Command | Description |
|---|---|
argus profile <pid> |
CPU/allocation/lock profiling (async-profiler) |
argus jfr <pid> start|stop|check|dump |
Flight Recorder control |
argus jfranalyze <file.jfr> |
Analyze JFR recording (GC, CPU, hot methods, I/O) |
argus logger <pid> |
View and change log levels at runtime |
argus events <pid> |
VM internal event log (safepoints, deopt, GC) |
argus report <pid> |
Comprehensive diagnostic report |
argus doctor <pid> |
One-click JVM health diagnosis with tuning recommendations |
argus flame <pid> |
One-shot flame graph โ profiles, generates HTML, opens browser |
argus suggest <pid> |
JVM flag optimization based on workload analysis |
argus ci |
CI/CD health gate โ exit codes + GitHub annotations |
argus compare <pid1> <pid2> |
Side-by-side JVM comparison (live or baseline) |
argus slowlog <pid> |
Real-time slow method detection via JFR streaming |
Monitoring
| Command | Description |
|---|---|
argus top |
Real-time monitoring (agent required) |
argus watch <pid> |
Real-time terminal dashboard (htop for JVM) |
argus tui [pid] |
Interactive terminal UI โ browse all commands (k9s-style) |
argus init |
First-time setup (language selection) |
Global Options: --source=auto|agent|jdk ยท --lang=en|ko|ja|zh ยท --format=table|json ยท --no-color
Full output examples for all 55 commands: docs/cli-commands.md
Attach to your JVM for real-time monitoring โ WebSocket streaming, flame graphs, Prometheus export, OTLP push.
# Attach agent
java -javaagent:$(argus-agent --path) -jar your-app.jar
# Open dashboard
open http://localhost:9202/
# Enable profiling + flame graph
java -javaagent:~/.argus/argus-agent.jar \
-Dargus.profiling.enabled=true \
-Dargus.contention.enabled=true \
-jar your-app.jar[Argus] JVM Observability Platform v1.0.0
[Argus] JFR streaming started
[Argus] Dashboard: http://localhost:9202/
Dashboard endpoints: / UI ยท /prometheus metrics ยท /flame-graph ยท /gc-analysis ยท /correlation ยท /export (CSV/JSON/JSONL)
See Configuration Guide for all agent properties.
Native Prometheus + Grafana integration. Deploy to Kubernetes with the included Helm chart.
# Prometheus scrape endpoint (no extra config needed)
curl http://localhost:9202/prometheus
# Export to OpenTelemetry Collector
java -javaagent:~/.argus/argus-agent.jar \
-Dargus.otlp.enabled=true \
-Dargus.otlp.endpoint=http://localhost:4318/v1/metrics \
-jar your-app.jar
# Docker โ diagnose any JVM on the host
docker run --pid=host ghcr.io/rlaope/argus doctor
docker run --pid=host ghcr.io/rlaope/argus watchHelm chart, Grafana dashboard JSON, and K8s setup: docs/kubernetes.md
Add JVM health checks to your pipeline. Exit codes are machine-readable: 0=pass, 1=warnings, 2=critical.
- name: JVM Health Check
uses: rlaope/Argus/action@master
with:
command: ci
fail-on: critical
format: github-annotationsargus ci --pid=auto --fail-on=critical --format=summaryZero-configuration auto-setup for Spring Boot 3.2+ applications.
Maven:
<dependency>
<groupId>io.argus</groupId>
<artifactId>argus-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>Gradle:
implementation 'io.argus:argus-spring-boot-starter:1.0.0'# application.properties
argus.server.port=9202
argus.profiling.enabled=true
argus.contention.enabled=trueThe argus-micrometer module also provides a MeterBinder exposing ~25 JVM metrics to any Micrometer-compatible registry (Prometheus, Datadog, InfluxDB, etc.).
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ argus-agent โโโโโถโ argus-core โโโโโโ argus-server โ
โ (JFR Stream) โ โ (Config/Buffer) โ โ (Netty/Analysis)โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โฒ โ
โ โ โผ
โผ โโโโโโโโดโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโ โ argus-cli โ โ argus-frontend โ
โ Target JVM โโโโโโโ (Unified โ โ (Dashboard UI) โ
โโโโโโโโโโโโโโโโโโโ โ Diagnostic)โ โโโโโโโโโโโโโโโโโโโ
โฒ jcmd โโโโโโโโโโโโโโโ โ
โ โ โ WebSocket +
โโโโโโโโโโโโโโโโโโโโโ HTTP Polling Flame Graph
Direct JDK Access (Agent Mode)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ argus-micrometer โ โ argus-spring-boot-starter โ
โ (MeterBinder, ~25 โ โ (Spring Boot 3.2+ auto-config) โ
โ metrics bridge) โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| Module | Description |
|---|---|
| argus-core | Shared config, event models, ring buffer |
| argus-agent | Java agent with JFR streaming engine |
| argus-server | Netty HTTP/WS server, 10 analyzers, Prometheus + OTLP |
| argus-frontend | Static dashboard with Chart.js and d3-flamegraph |
| argus-cli | 55 diagnostic commands, auto source detection, i18n |
| argus-micrometer | Micrometer MeterBinder exposing ~25 JVM metrics |
| argus-spring-boot-starter | Spring Boot 3.2+ auto-configuration for Argus agent |
| Feature | Java 11+ | Java 17+ | Java 21+ |
|---|---|---|---|
| CLI (55 commands) | โ | โ | โ |
| Dashboard & Web UI | โ | โ | โ |
| GC Analysis | CLI only | โ MXBean | โ JFR |
| Virtual Thread Monitoring | โ | โ | โ JFR |
| Flame Graph | โ | โ | โ JFR |
| Micrometer Metrics | โ | โ | โ |
| Spring Boot Starter | โ | โ | โ |
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/rlaope/argus/master/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/rlaope/argus/master/install.ps1 | iex
# Build from source
git clone https://github.com/rlaope/argus.git && cd argus
./gradlew :argus-cli:fatJar
# Uninstall
rm -rf ~/.argusShell completions (bash, zsh, fish, PowerShell) are installed automatically.
Contributions welcome โ bugs, features, docs, tests. See CONTRIBUTING.md ยท Architecture ยท CLI Reference
Maintainer: @rlaope
MIT License โ see LICENSE for details.
