1. 개요
OPENMARU APM은 Java 기반 웹 애플리케이션에 대한 실시간 모니터링을 제공함으로써 장애를 사전에 예방하고, 지속적인 성능 개선에 활용할 수 있는 APM(Application Performance Monitoring) 도구입니다.
OPENMARU APM은 Java 기반 웹 애플리케이션 에 대한 실시간 동작 모니터링뿐만 아니라, 실시간 통계 분석 기법을 적용하여 문제를 사전에 판단할 수 있는 강력한 기능들을 제공합니다.
이 가이드로 하는 일
에이전트를 설치합니다. 에이전트는 모니터링 대상 서버에서 도는 작은 프로그램으로, 성능 데이터를 모아 APM 서버로 보냅니다. APM 서버와 콘솔은 이미 설치되어 있다고 가정합니다 — 서버 구축은 별도의 설치 가이드에서 다룹니다.
에이전트는 두 종류입니다
| 무엇을 보나 | 어디에 설치하나 | 애플리케이션을 고치나 | |
|---|---|---|---|
| 시스템 에이전트 | 서버의 CPU·메모리·디스크·네트워크, 웹 서버·데이터베이스 | 서버마다 한 벌 | 아니오 (별도 프로세스) |
| WAS 에이전트 | 애플리케이션 안의 요청 흐름·SQL·외부 호출·JVM 메모리 | WAS 인스턴스마다 한 벌 | 아니오 (기동 옵션만 추가) |
둘 다 설치하는 것을 권합니다. 응답이 느려졌을 때 서버 자원이 모자란 것인지 코드가 문제인지 가르려면 양쪽 데이터가 함께 있어야 합니다.
설치를 마치면 무엇이 되나
- 콘솔에 서버와 애플리케이션 인스턴스가 나타나고 지표가 실시간으로 갱신됩니다
- 느린 요청 한 건을 눌러 어느 구간에서 시간을 썼는지 볼 수 있습니다
- 임계치를 넘으면 알림을 받도록 설정할 수 있습니다 (이벤트 설정 가이드에서 다룹니다)
얼마나 걸리나
에이전트 한 벌에 10~20분입니다. 대부분은 파일을 내려받아 압축을 풀고 접속 정보를 적는 작업이고, WAS 에이전트는 마지막에 WAS 재기동이 한 번 필요합니다. 재기동 일정을 미리 잡아 두십시오.
설치 가이드 소개
이 문서는 OPENMARU APM을 사용하여 웹 애플리케이션 서버(WAS)를 모니터링하고자 하는 사용자를 위한 설치 안내서입니다.
대상 독자
| 대상 | 설 명 |
|---|---|
| 시스템 관리자 | APM Server 및 에이전트 설치 담당자 |
| DevOps 엔지니어 | CI/CD 파이프라인에 APM 통합 담당자 |
| 개발자 | 애플리케이션 성능 분석 및 최적화 담당자 |
| 운영팀 | 실시간 모니터링 및 장애 대응 담당자 |
문서의 목적
- OPENMARU APM 에이전트 설치 및 구성 방법 제공
- 웹 애플리케이션 모니터링을 통한 장애 원인 파악 가이드
- 성능 분석 및 최적화를 위한 모니터링 설정 방법
주요 기능
에이전트를 설치하면 콘솔에서 아래 기능을 쓸 수 있습니다. 무엇을 볼 수 있는지 먼저 알아야 어느 에이전트를 어디에 설치할지 정할 수 있으므로 설치에 들어가기 전에 훑어보십시오. 괄호 안은 그 기능에 필요한 에이전트입니다.
성능 분석 및 모니터링
서비스 만족도 지수 (APDEX) — WAS 에이전트
"지금 서비스가 괜찮은가"를 숫자 하나로 답합니다. 응답 시간을 밀리초로 보면 1.2초가 괜찮은 값인지 매번 따져야 하지만, APDEX 는 사용자가 만족했는지를 기준으로 0~100 점으로 환산하므로 "90 이상 유지" 같은 목표를 세우기 쉽습니다.
그래서 부서 간 합의 문서나 경영진 보고의 서비스 수준 목표(SLO) 지표로 자주 씁니다. 값이 떨어지면 아래의 T-Map 으로 어느 트랜잭션이 끌어내렸는지 찾아 들어갑니다.
Application Performance Index의 약자로, 애플리케이션 성능에 대한 사용자 만족도를 0~100점 사이의 하나의 숫자로 표현하는 산업 표준 지표입니다.
등급 구분:
- 94~100점: Excellent (탁월) - 거의 완벽한 성능
- 85~94점: Good (좋음) - 양호한 성능
- 70~85점: Fair (보통) - 허용 가능한 성능
- 50~70점: Poor (나쁨) - 개선 필요
- 0~50점: Unacceptable (수용 불가) - 즉각적인 조치 필요
응답 시간 기준:
- Satisfied (만족): T 이하 - 사용자가 집중하고 있음, 성능이 만족스러움
- Tolerating (허용): T ~ 4T - 사용자가 집중하기 어려움, 성능에 만족스럽지 못함
- Frustrated (불만): 4T 초과 - 사용자가 서비스 사용을 포기함, 서비스를 받아들일 수 없는 상태
APDEX 계산식: (Satisfied 요청 수 + (Tolerating 요청 수 ÷ 2)) ÷ 전체 요청 수 × 100
T(Threshold)는 WAS Agent 설정 파일에서 지정(기본값 3.0)할 수 있습니다.
T-Map (Transaction 분포도) — WAS 에이전트
평균에 가려진 느린 요청을 찾습니다. 트랜잭션 하나하나를 시간(가로)과 응답 시간(세로)의 점으로 찍어 놓은 화면입니다.
평균 응답 시간만 보면 "0.4초, 괜찮다"로 끝나지만, T-Map 에서는 위쪽에 떨어져 있는 몇 개의 점이 그대로 보입니다. 그 점을 클릭하면 그 요청 하나의 처리 과정이 열립니다 — 어느 메서드에서 얼마를 썼는지, 어떤 SQL 을 몇 번 실행했는지, 외부 시스템을 얼마나 기다렸는지.
점이 흩어진 모양으로 원인을 짐작할 수 있습니다. 특정 시각에 세로로 몰려 있으면 그때 무슨 일이 있었던 것이고(배치·GC·배포), 특정 화면만 계속 위쪽에 있으면 그 화면의 문제입니다.
실시간 예측 (Forecast) — WAS · 시스템 에이전트
임계값을 넘기 전에 알려 줍니다. 최근 값의 추세를 이어 그려 "이대로 가면 몇 분 뒤에 임계값에 닿는다"를 계산합니다.
메모리가 서서히 새는 경우처럼 터진 뒤에는 되돌리기 어려운 상황에서 쓸모가 있습니다. 임계값 도달 알림은 이미 문제가 생긴 뒤에 오지만, 예측 알림은 조치할 시간을 줍니다.
예측 대상은 CPU 사용률, 메모리 사용량, 지연 트랜잭션입니다.
장애 분석 도구
WAS 장애 분석 — WAS 에이전트
"WAS 가 멈췄는데 원인을 모르겠다"에 답하는 도구입니다. 장애가 났을 때 서버에 접속해
jstack 을 뜨고 눈으로 읽는 대신, 콘솔에서 바로 받아 분석 결과를 봅니다.
| 도구 | 어떤 상황에 쓰나 |
|---|---|
| 스레드 덤프 수집·분석 | 응답 이 없거나 느릴 때 — 어느 스레드가 어디서 멈춰 있는지, 데드락인지 |
| 힙 덤프 분석 | 메모리가 부족할 때 — 무엇이 메모리를 잡고 있는지 |
| 실행 중인 SQL 추적 | 데이터베이스가 의심될 때 — 지금 돌고 있는 쿼리가 무엇인지 |
| 트랜잭션 프로파일링 | 특정 요청이 느릴 때 — 그 안에서 어느 구간이 오래 걸리는지 |
| 메서드 실행 통계 | 코드 어디를 고칠지 정할 때 — 호출 횟수와 누적 시간 |
장애 상황에서는 서버에 접속조차 어려울 때가 있습니다. 미리 설치해 두면 그때 콘솔만으로 자료를 확보할 수 있습니다.
이상 징후 모니터링 — WAS · 시스템 에이전트
임계값을 정하지 않아도 되는 감시입니다. 지표마다 임계값을 손으로 정하려면 서비스 특성과 시간대를 다 알아야 하는데, 이 기능은 평소 값의 분포를 학습해 두고 거기서 벗어날 때 알려 줍니다.
새벽에는 한산하고 낮에는 붐비는 서비스에서 고정 임계값 하나로는 둘 다 맞추기 어렵습니다. 평소와 다른지를 보면 시간대에 관계없이 판단할 수 있습니다.
감지 대상은 평균 응답 시간 급증, 오류율 증가, CPU·메모리의 평소와 다른 사용 패턴, 트래픽 급증·급감입니다.
시스템 및 인프라 모니터링
OS 자원 모니터링 — 시스템 에이전트
애플리케이션이 느린 것인지 서버가 부족한 것인지 가릅니다. WAS 지표만 보면 응답이 느려진 사실은 알아도 원인이 코드인지 자원인지 알 수 없습니다. 같은 시각의 서버 자원을 겹쳐 보면 갈립니다.
| 모니터링 항목 | 수집 지표 | 무엇을 판단하나 |
|---|---|---|
| CPU | 사용률, Core별 사용량, System/User Time | 연산이 몰렸는가, 커널 쪽인가 사용자 코드인가 |
| Memory | 사용량, 가용 메모리, Swap 사용량 | 메모리가 부족한가, 스왑이 일어나 느려졌는가 |
| Disk | 사용률, I/O 성능, 읽기/쓰기 속도 | 로그·데이터 쓰기가 병목인가, 용량이 곧 차는가 |
| Network | 트래픽, 패킷 수, 오류율, 소켓 상태 | 대역폭이 모자란가, 소켓이 쌓이고 있는가 |
| Load Average | 1분, 5분, 15분 평균 부하 | 지금 몰린 것인가, 계속 그런 것인가 |
1분·5분·15분을 같이 보는 이유 — 1분 만 높고 15분이 낮으면 방금 몰린 것이고, 셋 다 높으면 계속 부하가 걸려 있는 것입니다. 전자는 기다려 보고 후자는 증설을 검토합니다.
웹 서버 모니터링 — 시스템 에이전트 (플러그인)
사용자와 WAS 사이 구간을 봅니다. WAS 에는 요청이 안 들어왔는데 사용자는 느리다고 할 때, 그 사이에서 무슨 일이 있었는지는 웹 서버 지표로만 알 수 있습니다.
| 지표 | 무엇을 알 수 있나 |
|---|---|
| 트래픽 | 실제로 얼마나 들어오고 있는가 |
| RPS(초당 요청 수) | 부하가 늘었는가, 평소 대비 몇 배인가 |
| 활성 연결 수 | 연결이 처리되지 못하고 쌓이고 있는가 |
| 응답 코드 분포 | 2xx·3xx·4xx·5xx — 오류가 웹 서버에서 난 것인가 WAS 에서 난 것인가 |
5xx 가 웹 서버에서 잡히는데 WAS 트랜잭션 수는 그대로라면 요청이 WAS 까지 닿지 못한 것입니다. 연결 수·워커 상태를 봐야 합니다.
이벤트 및 알림
통계 기반 이벤트 처리
알림이 너무 많아 아무도 안 보는 상태를 피하는 것이 목적입니다. 값이 임계값을 한 번 넘을 때마다 알리면 순간적으로 튄 값에도 알림이 나가고, 그런 알림이 쌓이면 정작 중요한 것을 놓칩니다.
그래서 순간값이 아니라 일정 구간의 통계값(평균·표준편차)으로 판정합니다. 잠깐 튄 값은 평균에 묻히고, 실제로 나빠진 상태만 남습니다.
| 방식 | 하는 일 |
|---|---|
| 통계 기반 임계치 | 평균·표준편차로 판정 — 순간적인 튐을 걸러냅니다 |
| 이벤트 필터링 | 같은 원인의 반복 알림을 묶습니다 |
| 알림 채널 | 이메일 · SMS · Webhook · Slack · MS Teams |
채널별 설정 방법은 OPENMARU APM 이벤트 설정 가이드에서 다룹니다.
사용자 인터페이스
HTML5 기반 웹 콘솔
따로 설치할 프로그램이 없습니다. 브라우저만 있으면 되므로 장애 상황에서 사무실 밖에 있어도 휴대전화로 확인할 수 있습니다.
| 특징 | 설명 |
|---|---|
| 반응형 디자인 | 데스크톱 · 태블릿 · 휴대전화 화면에 맞춰 배치가 바뀝니다 |
| 실시간 대시보드 | WebSocket 으로 값이 바뀔 때마다 갱신됩니다 — 새로 고침이 필요 없습니다 |
| 대시보드 구성 | 자주 보는 차트를 골라 자기 화면을 만듭니다 |
| 다크 모드 | 야간 상황실처럼 어두운 곳에서 보기 위한 어두운 테마 |
시스템 구성
아키텍처 개요
데이터는 한 방향으로 흐릅니다. 모니터링 대상 서버에 설치한 에이전트가 수집한 값을 APM 서버로 밀어 올리고, APM 서버가 집계해 저장소에 쌓으면, 운영자는 웹 콘솔로 그것을 읽습니다. APM 서버가 대상 서버로 먼저 접속하는 일은 없습니다 — 방화벽은 대상 서버에서 APM 서버로 나가는 방향만 열면 됩니다.
이 구조 때문에 설치도 대상 서버마다 따로 합니다. 서버 100 대를 보려면 에이전트를 100 번 설치하는 것이지, APM 서버에 서버 목록을 등록하는 방식이 아닙니다.
구성 요소
다섯 가지가 등장하지만 직접 설치하는 것은 에이전트 두 개뿐입니다. 나머지 셋(APM 서버· 저장소·웹 콘솔)은 APM 서버를 설치할 때 함께 올라갑니다.
| 구성 요소 | 어디에 있나 | 이 가이드에서 다루나 |
|---|---|---|
| WAS 에이전트 | 모니터링할 WAS 마다 | 다룹니다 — 3장 · 4장 |
| 시스템 에이전트 | 모니터링할 서버마다 | 다룹니다 — 2장 |
| APM 서버 · 데이터 저장소 · 웹 콘솔 | 한 곳에 모여 있음 | 아니요 — 설치 가이드가 따로 있습니다 |