이 문서를 통해 아래 질문들에 답할 수 있게 됩니다.
JFR JMX Actuator 관찰에서 붙잡아야 할 핵심 판단 기준은 무엇인가?관찰 도구를 시간축으로 연결한다라는 기준은 어떤 JVM/OS 신호로 확인되는가?- Java/Spring 코드에서
JFR JMX Actuator 관찰판단 기준은 어떤 장애 신호로 드러나는가?
개요
이 문서의 주제는 JFR JMX Actuator 관찰이다. JFR, JMX, Spring Boot Actuator로 JVM과 애플리케이션 지표를 연결하는 방법을 다룬다.
먼저 붙잡을 기준은 다음 문장이다. 관찰 도구를 시간축으로 연결한다. Actuator는 현재 metric을 HTTP로 보여 주고, JMX는 MBean 기반 runtime 상태를 노출하며, JFR은 일정 시간 동안 JVM event를 기록한다. 세 도구는 서로 대체재가 아니라 시간축을 맞춰 쓰는 증거 묶음이다.
핵심 모델
- 판단 기준: 관찰 도구를 시간축으로 연결한다.
- JFR은 allocation, lock, GC, thread, method profiling event를 duration 제한으로 수집하는 incident 도구다.
- JMX는 JVM과 library가 노출한 MBean을 읽는 표준 관리 인터페이스다.
- Actuator는 Micrometer metric을 HTTP endpoint로 노출해 운영 대시보드와 알림으로 연결한다.
- 도구별 시각, tag, 단위, sampling 방식이 다르므로 같은 증거로 보려면 timestamp를 맞춰야 한다.
- 관찰 endpoint는 보안과 노출 범위를 통제해야 한다.
문서별 핵심 구분
- JFR은 JVM event를 낮은 부담으로 수집하는 incident 도구다.
- JMX와 Actuator는 runtime metric을 외부에서 읽게 해 준다.
- 도구별 지표를 같은 시간축으로 맞춰야 한다.
원리
Actuator는 계속 보는 계기판에 가깝다. jvm.gc.pause, jvm.threads.live, process.cpu.usage, pool metric처럼 낮은 비용으로 trend와 alert를 만든다.
JFR은 장애 시간대의 자세한 event 기록이다. 짧은 duration과 profile 설정으로 allocation, lock, method sample, GC event를 묶어 원인 후보를 좁힌다.
JMX는 JVM과 library의 MBean을 직접 읽는 경로다. 운영에서 사용하려면 인증, 네트워크 노출, 방화벽, endpoint 접근 정책이 중요하다.
따라서 관찰 도구 선택은 “더 강력한 도구”가 아니라 “지금 필요한 증거가 trend인지 event인지, 낮은 비용 metric인지 상세 profile인지”로 결정한다.
Java/Spring 연결
- Spring Boot Actuator는 Tomcat, JVM, process, HikariCP 같은 metric을 HTTP로 노출한다.
- Actuator metric은 원인 후보를 좁히는 시작점이고, JFR은 해당 시간대의 allocation/lock/method event를 보강한다.
- JMX를 열 때는 운영망 접근 제어와 인증을 반드시 확인해야 한다.
- 장애 중 JFR을 시작할 때는 duration, settings, filename, 저장 경로를 통제한다.
- Metric tag와 endpoint 이름은 Spring Boot/Micrometer 버전에 따라 달라질 수 있어 runbook에 실제 이름을 남긴다.
코드와 설정 예시
jcmd <pid> JFR.start name=incident settings=profile duration=120s filename=incident.jfr
curl -s localhost:8080/actuator/metrics/jvm.gc.pause
jcmd <pid> JFR.check예시는 Actuator로 현재 metric을 확인하면서 같은 시간대 JFR을 duration 제한으로 수집하는 흐름이다. JFR 파일명에는 incident 시간과 PID를 넣어 다른 로그와 맞춘다.
관찰 명령
jcmd <pid> JFR.start name=profile settings=profile duration=120s filename=profile.jfr
jcmd <pid> JFR.check
curl -s localhost:8080/actuator/metrics/jvm.threads.liveJFR JMX Actuator 관찰 관찰 명령은 결론이 아니라 가설 확인 도구다. 운영 중에는 반복 간격, 대상 PID, 수집 시각을 함께 남기고 출력이 큰 명령은 범위를 제한한다.
지표 해석
| 신호 | 먼저 의심할 것 | 다음 확인 |
|---|---|---|
| Actuator metric만 있음 | trend는 보이나 원인 event 부족 | JFR, thread dump |
| JFR 파일 과대 | duration/settings 과함 | profile/default, 저장 위치 |
| JMX 접근 실패 | 인증/네트워크/권한 문제 | endpoint, firewall, credential |
| metric tag 불일치 | 버전/설정 차이 | 실제 endpoint 목록 |
관찰 도구의 증거력은 timestamp와 단위 정합성에서 나온다. Actuator spike, JFR event, JMX 값을 같은 구간으로 맞추지 못하면 서로 다른 현상을 비교하게 된다.
장애 상황에서 보는 순서
- Actuator metric으로 어떤 JVM/application 지표가 튀었는지 확인한다.
- 같은 시각의 OS 지표와 application log timestamp를 맞춘다.
- 원인 event가 필요하면 짧은 JFR을 duration과 파일 경로를 제한해 수집한다.
- JMX/Actuator endpoint 접근 권한과 노출 범위를 확인한다.
- 수집 파일과 metric query를 incident 기록에 남긴다.
이 순서는 관찰 도구를 남용하지 않기 위한 루틴이다. 상시 metric으로 후보를 좁히고, JFR/JMX는 필요한 범위와 시간만 열어 상세 증거를 보강한다.
실전 팁
- Actuator는 상시 trend와 alert, JFR은 incident 시점 상세 event로 역할을 나눈다.
- JFR은 duration과 settings를 제한해 운영 부하와 파일 크기를 통제한다.
- Metric query에는 endpoint, tag, timestamp를 같이 남긴다.
- JMX는 열기 전에 보안 노출 범위를 검토한다.
- 장애 회고에는 어떤 도구가 어떤 후보를 지웠는지 남긴다.
주니어 팁
- Actuator는 빠르게 보는 계기판, JFR은 짧게 녹화하는 사건 기록으로 이해한다.
- JFR 파일을 만들 때는 duration과 저장 경로를 먼저 정한다.
- Metric 이름은 외우기보다 실제
/actuator/metrics목록에서 확인한다.
시니어 팁
- 운영 대시보드는 Actuator metric을 기반으로 하되, JFR 수집 절차를 incident runbook에 포함한다.
- JMX는 필요한 환경에서만 열고 네트워크 접근과 인증을 표준화한다.
- Metric tag cardinality가 커지면 저장 비용과 대시보드 성능도 함께 관리한다.
Guru급 팁
- Incident runbook에는 “어떤 metric이 튀면 어떤 JFR 설정을 몇 초 동안 켤지”까지 적는다.
- Actuator tag cardinality와 JFR 파일 크기는 관찰 비용이다. 장애 대응 도구도 저장소와 네트워크에 부담을 만든다.
- JMX 접근은 편의 기능이 아니라 운영 보안 표면이다. 필요한 MBean, 접근 주체, 네트워크 경로를 좁혀 둔다.
위험 신호!
- Actuator metric 하나로 원인을 확정한다.
- JFR duration과 저장 위치를 정하지 않고 운영에서 장시간 수집한다.
- JMX를 인증 없이 외부망에 노출한다.
- Metric timestamp와 JFR event 시간을 맞추지 않는다.
- 수집한 JFR 파일을 회고 전에 유실한다.
확인 질문
확인 질문
- Actuator와 JFR의 역할은 어떻게 다른가?
- Actuator는 상시 metric trend를 보여 주고, JFR은 일정 시간의 JVM event를 기록해 원인 후보를 좁힌다.
- 운영 중 JFR을 수집할 때 반드시 정해야 할 것은 무엇인가?
- Duration, settings, filename, 저장 위치, 수집 대상 PID를 정해야 한다.
- JMX를 운영에서 사용할 때 주의할 점은 무엇인가?
- 인증, 네트워크 노출, 방화벽, 접근 권한을 통제해야 한다.