1. 모니터링
나무위키: 어떠한 대상의 상태를 주의깊게 관찰, 주시를 한다는 의미로 쓰이며, 다양한 분야에서 고유한 뉘앙스로 활용되는 어휘다.
애플리케이션을 안정적으로 운영하기 위해서는 서버의 건강 상태와 비정상 징후를 실시간으로 체크해야 한다.
모니터링이 부재할 경우 서비스 장애 대응이 늦어지고 사용자 경험이 저하될 수 있다.
주요 모니터링 대상 (예시)
- 비즈니스 오류: 잘못된 입력값 유입 및 비정상적인 데이터 흐름 탐지.
- 애플리케이션 예외: 예상치 못한
Runtime Exception및 에러 로그 발생 모니터링. - 시스템 리소스: CPU 사용량, 메모리(Heap) 점유율, 디스크 I/O, 네트워크 트래픽 등.
- 인프라 및 연동: 외부 API 호출 지연, 데이터베이스(DB) 연결 상태 및 커넥션 풀 확인.
2. 모니터링 데이터 수집(Prometheus)
Prometheus(프로메테우스)는 애플리케이션에서 발생하는 수많은 메트릭(Metric) 데이터를 수집하고 저장하는 시계열 데이터베이스(TSDB)입니다.
- Pull 방식의 수집: 프로메테우스가 직접 애플리케이션의 엔드포인트(예: /actuator/prometheus)에 접속해 데이터를 긁어옵니다.
- 강력한 쿼리 언어 (PromQL): 저장된 데이터를 조건에 맞게 조회하고 분석할 수 있는 전용 언어를 제공합니다.
- 유연한 설정: prometheus.yml 설정을 통해 수집 주기(scrape_interval)와 수집 대상(targets)을 자유롭게 지정할 수 있습니다.
2-1. 사용법📝
- 의존성 설치
- 우선 모니터링을 하고자 하는 Spring Boot 프로젝트에 의존성을 추가해야 한다.
-
// build.gradle dependencies { // 애플리케이션 상태 모니터링을 위한 Actuator implementation 'org.springframework.boot:spring-boot-starter-actuator' // 프로메테우스 모니터링 시스템 연동을 위한 마이크로미터 레지스트리 runtimeOnly 'io.micrometer:micrometer-registry-prometheus' }
- Spring Boot 설정
- 의존성을 추가했다면, 이제 어떤 데이터를 외부에 공개할지 설정해야 한다.
- 기본적으로 보안을 위해 대부분의 모니터링 엔드포인트는 닫혀 있으므로, 이를 수동으로 개방해주는 과정이 필요.
-
management: endpoints: web: exposure: # 프로메테우스 수집을 위해 prometheus 엔드포인트 노출은 필수입니다. # 모든 엔드포인트를 열거나, 특정 엔드포인트(prometheus)만 지정할 수 있습니다. include: "prometheus,health,info" endpoint: # s가 붙지 않는 단수형임에 주의 prometheus: enabled: true health: show-details: always
- Prometheus 설치
- https://prometheus.io/download/
- 위 링크에 접속하여 본인 OS에 맞는 파일을 다운로드 한다.
- 필자는 window 기준 prometheus-3.9.1.windows-amd64.zip 을 받았다.
- 다운로드 완료후
prometheus.yml의 내용을 아래를 참고하여 수정한다. - 수정 후, prometheus.exe를 실행시켜 prometheus서버를 실행 시킨다.
- 모든게 정상적으로 설정된 후
http://localhost:9090에 접속시 prometheus 관련 페이지가 뜰 것이다.
# prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'spring-boot-app'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
static_configs:
- targets: ["localhost:8080"]
labels:
application: 'library-system'
3. 모니터링 데이터 시각화(Grafana)
프로메테우스가 데이터를 '수집'한다면, Grafana(그라파나)는 그 데이터를 인간이 보기 편하게 '시각화'해주는 도구.
- 직관적인 대시보드: 복잡한 수치 데이터를 차트, 그래프, 게이지 등 다양한 형태로 한눈에 보여줍니다.
- 다양한 데이터 소스 연동: 프로메테우스뿐만 아니라
ElasticSearch,MySQL,PostgreSQL등 다양한 DB와 연결이 가능합니다. - 실시간 알람(Alerting): 특정 지표(예: CPU 90% 이상)가 임계치를 넘으면 슬랙(Slack)이나 이메일로 즉시 알림을 보낼 수 있습니다.
- 템플릿 활용: Spring Boot 전용 대시보드(ID: 11378 등)를 임포트하면 복잡한 설정 없이도 전문가 수준의 모니터링 화면을 바로 사용할 수 있습니다.
2-1. 사용법📝
- Grafana 설치
- Grafana 다운로드 페이지에 접속합니다.
- Windows용 설치 파일(Installer)을 다운로드하여 설치하거나, Zip 파일을 받아 압축을 풉니다.
- 설치가 완료되면 별도의 설정 없이 http://localhost:3000에 접속합니다.
- 초기 아이디/비밀번호: admin / admin (로그인 후 비밀번호 변경 창이 뜹니다.)
- Prometheus 데이터 소스 연결 - 그라파나가 프로메테우스의 데이터를 가져올 수 있도록 연결해 주어야 합니다.



'Java' 카테고리의 다른 글
| [Java] Mockito (1) | 2026.02.01 |
|---|---|
| [Java] 입력값 검증의 범위와 책임 (0) | 2026.02.01 |
| [Java] ORM의 N+1 문제 (0) | 2026.01.13 |
| [Java] @RestController와 HttpMassageConverter (0) | 2026.01.04 |
| [Java] @Controller 와 @RestController (0) | 2025.12.26 |