← back

Argus

Java 11+ · CLI + Web Dashboard · MIT License ·

jcmd, JFR, async-profiler를 하나의 CLI와 웹 대시보드로 통합한 JVM 관측성 오픈소스입니다. 에이전트 없이 실행 중인 아무 JVM에 바로 붙어서 쓸 수 있고, Java 버전에 따라 자동으로 데이터 소스를 전환합니다.

JVM 모니터링 도구는 이미 많지만, 필요한 것들을 찾아서 조합하고 대시보드를 구성하고 어댑팅 로직까지 직접 짜는 건 꽤 번거로운 일입니다. Argus는 이런 프로파일링 도구들을 하나로 오케스트레이션하면서, 자체적으로 가공한 지표와 독자적인 대시보드를 함께 제공합니다.

Dashboard — Real-time JVM Monitoring

CLI — 50+ Diagnostic Commands

CLI — 50개 이상의 진단 명령

에이전트 설치 없이, 재시작 없이, 실행 중인 JVM에 바로 붙어서 진단합니다. 내부적으로 jcmd와 jstat을 호출하고, async-profiler를 연동해서 프로파일링까지 지원합니다.

메모리 분석

힙 히스토그램, 힙 덤프, 메타스페이스 분석, 네이티브 메모리 추적, 스냅샷 비교를 통한 메모리 누수 탐지

GC 모니터링

세대별 사용률을 시각적 바로 표시, YGC/FGC 카운트, 전체 GC 시간, GC 원인 분석

스레드 진단

스레드 덤프, 상태별 요약, 데드락 감��, 스레드 풀 분석, 파이널라이저 큐 확인

프로파일링

async-profiler 연동으로 CPU, 할당, 락, wall-clock 프로파일링. --flame 플래그 하나로 HTML 플레임 그래프 생성

JFR 제어

JFR 녹화 시작/중지/체크/덤프를 CLI에서 직접 제어. Java Flight Recorder 라이프사이클을 명령줄로 관리

런타임 제어

VM 플래그 조회 및 런타임 변경, JVM 로깅 설정, JMX 제어, 종합 진단 리포트 생성

인터랙티브 TUI

k9s 스타일의 터미널 UI. 모든 명령을 브라우징하고 실시간 모니터링 대시보드를 제공

헬스 진단 & CI 게이트

argus doctor로 원클릭 JVM 건강 진단 및 튜닝 권장. argus ci로 CI/CD 파이프라인에서 헬스 게이트 실행

슬로우 메서드 & GC 로그

JFR 스트리밍으로 실시간 슬로우 메서드 탐지. GC 로그를 분석해서 pause 분포와 튜닝 방향 제시

비교 & 최적화

두 JVM을 나란히 비교하고, 워크로드 분석 기반 VM 플래그 최적화 제안

모든 명령에 --lang=en|ko|ja|zh 옵션이 있어서 4개 언어로 출력할 수 있고, --format=json으로 자동화 파이프라인에 연결할 수도 있습니다.

Web Dashboard — 실시간 모니터링

Java Agent를 붙이면 내장 Netty 서버가 올라가면서 웹 대시보드를 제공합니다. WebSocket 스트리밍으로 실시간 데이터가 들어오고, Chart.js와 d3-flamegraph로 시각화합니다.

플레임 그래프

연속 프로파일링 결과를 d3-flamegraph로 시각화. 줌, 호버, 내보내기 지원

가상 스레드 모니터링

Java 21+ 가상 스레드 라이프사이클 추적, 피닝 감지, 캐리어 스레드 분석

GC & 메모리

힙 사용량, GC pause 분석, 할당 속도 추적, 메타스페이스 모니터링

상관 분석

여러 메트릭 간 상관관계를 자동 분석하고 권장 사항을 제시

메트릭 내보내기 & 스프링 통합

Prometheus 스크래핑 엔드포인트와 OTLP 푸시 내보내기를 기본 제공합니다. CSV, JSON, JSONL 형식으로 데이터를 내보낼 수도 있습니다.

argus-micrometer 모듈은 약 25개의 JVM 메트릭을 Micrometer 레지스트리에 바인딩합니다. Prometheus, Datadog, InfluxDB 등 어떤 백엔드든 연결할 수 있습니다.

argus-spring-boot-starter는 Spring Boot 3.2+ 애플��케이션에 설정 없이 자동으로 통합됩니다. application.properties에 argus.* 프로퍼티만 추가하면 됩니다.

아키텍처

argus-core 설정, 이벤트 모델, 링 버퍼 (65,536)
argus-agent Java Agent, JFR 스트리밍 엔진
argus-server Netty HTTP/WS, 10개 분석기, Prometheus + OTLP
argus-frontend Chart.js + d3-flamegraph 대시보드
argus-cli 50+ 명령, 자동 소스 감지, 4개 언어
argus-micrometer Micrometer MeterBinder, ~25개 메트릭
argus-spring-boot-starter Spring Boot 3.2+ 자동 설정

Java 버전별 호환성

기능 Java 11+ Java 17+ Java 21+
CLI (33개 명령)YesYesYes
웹 대시보드-YesYes
GC / CPU / 힙 / 스레드CLI onlyMXBeanJFR
락 경합 분석--JFR
할당 추적--JFR
가상 스레드 모니터링--JFR
플레임 그래프--JFR
Micrometer / Spring Boot-YesYes

Java 17~20에서는 MXBean 폴링을 사용하고, Java 21 이상에서는 JFR 스트리밍으로 자동 전환됩니다. 대시보드 UI도 감지된 Java 버전에 따라 표시 항목을 자동으로 조정합니다.

$ argus report 12345

JVM Info
  PID: 12345 | Java 21.0.2 | OpenJDK 64-Bit Server VM
  Uptime: 2h 34m | Args: -Xmx512m -XX:+UseG1GC

Heap Memory
  Used: 287MB / 512MB ▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░ 56%

GC Utilization
  Eden  ▓▓▓▓▓▓▓░░░ 72%   Old ▓▓▓░░░░░░░ 31%
  YGC: 847 (1.2s)  FGC: 0 (0s)

Thread Summary
  Total: 42 | RUNNABLE: 8 | WAITING: 28 | TIMED_WAITING: 6

$ argus profile 12345 --type cpu --flame --duration 10
Profiling for 10s... done. Flame graph saved → /tmp/argus-flame-12345.html