Skip to content

feat: Argus v0.4 - Flame Graph, CLI Monitor, OTLP Export#23

Merged
rlaope merged 1 commit intomasterfrom
feature/v0.4-flamegraph-cli-otlp
Feb 10, 2026
Merged

feat: Argus v0.4 - Flame Graph, CLI Monitor, OTLP Export#23
rlaope merged 1 commit intomasterfrom
feature/v0.4-flamegraph-cli-otlp

Conversation

@rlaope
Copy link
Owner

@rlaope rlaope commented Feb 10, 2026

Summary

Argus v0.4 pivots from VT-focused profiler to a lightweight, zero-dependency JVM monitoring tool (JDK 24+ eliminates VT pinning via JEP 491).

New Features

  • Flame Graph: Interactive d3-flamegraph visualization from JFR ExecutionSample data with 60s auto-reset window, pause/resume, and server-side reset
  • CLI Monitor (argus top): htop-style terminal UI in new argus-cli module — CPU, heap, GC, virtual threads, hot methods, contention. Zero external dependencies
  • OTLP Export: Push-based metrics to OpenTelemetry collectors via hand-coded JSON (no SDK). Configurable via -Dargus.otlp.* system properties
  • Install Script: One-line curl | bash installer with argus command PATH setup

Bug Fixes

  • Fix d3-flamegraph CDN URL (package name d3-flame-graph, not d3-flamegraph)
  • Fix demo duration passthrough in Gradle tasks (default 5 minutes)

Files Changed

Category Details
New module argus-cli/ (5 Java files + build.gradle.kts)
New classes FlameGraphAnalyzer, OtlpJsonBuilder, OtlpMetricsExporter
New script install.sh
Modified AgentConfig (OTLP config), ArgusServer, ArgusChannelHandler, EventBroadcaster
Frontend index.html (CDN fix + flame graph UI), app.js (pause/resume/reset), style.css
Docs README.md (full rewrite: features, install, quick start, config)

Configuration (New)

-Dargus.otlp.enabled=false
-Dargus.otlp.endpoint=http://localhost:4318/v1/metrics
-Dargus.otlp.interval=15000
-Dargus.otlp.headers=
-Dargus.otlp.service.name=argus

Test plan

  • ./gradlew build passes (33 tasks, all green)
  • Flame graph renders with profiling enabled (-Dargus.profiling.enabled=true)
  • CLI connects and displays live metrics from running server
  • /flame-graph endpoint returns d3-compatible JSON
  • /flame-graph?format=collapsed returns collapsed stack format
  • /flame-graph?reset=true clears server data
  • Pause/Resume button freezes flame graph updates with timestamp
  • install.sh creates wrapper scripts and configures PATH
  • OTLP config fields added to AgentConfig with system property parsing

🤖 Generated with Claude Code

- Flame graph: d3-flamegraph visualization with 60s auto-reset window,
  pause/resume, server-side reset via /flame-graph?reset=true
- CLI (argus top): htop-style terminal monitor in new argus-cli module,
  zero external dependencies, parallel HTTP polling
- OTLP: push-based metrics export to OpenTelemetry collectors,
  hand-coded JSON (no SDK), configurable via -Dargus.otlp.* properties
- install.sh: one-line installer with PATH setup for zsh/bash/fish
- Fix CDN URL (d3-flamegraph -> d3-flame-graph package name)
- Fix demo duration passthrough in Gradle tasks (default 5min)
- Update README with new features, installation, and configuration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@rlaope rlaope merged commit d35f8df into master Feb 10, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants