| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- input
- list
- html
- SpringBoot
- Array
- CSS
- 테스트자동화
- 인텔리제이
- junit5
- 정규식
- 자바문법
- 자바
- Visual Studio Code
- 배열
- javascript
- 스프링부트
- java테스트
- vscode
- IntelliJ
- Java
- string
- 자바스크립트
- math
- Eclipse
- ArrayList
- junit
- js
- HashMap
- 단위테스트
- 문자열
- Today
- Total
어제 오늘 내일
[Spring Boot] Docker로 3분 만에 모니터링 구축하기 (Prometheus + Grafana) 본문
[Spring Boot] Docker로 3분 만에 모니터링 구축하기 (Prometheus + Grafana)
hi.anna 2026. 3. 4. 00:53지난 포스팅에서 Spring Actuator를 통해 서버의 상태를 JSON으로 확인했습니다.
하지만 실무에서 누가 검은 화면의 글씨를 읽고 있을까요?
오늘은 Actuator(데이터 제공) + Prometheus(데이터 수집) + Grafana(데이터 시각화) 3대장을 연결하여,
멋진 그래프로 서버를 모니터링하는 방법을 구축해 봅니다.
1. 큰 그림 이해하기 (Architecture)
우리가 구축할 시스템은 3대장이 협력하는 구조입니다.
- Spring Boot (Actuator): "내 현재 상태(CPU, 메모리 등)를 알려줄게!" (데이터 생성)
- Prometheus (프로메테우스): 주기적으로 Spring Boot에 접속해서 데이터를 긁어갑니다. (데이터 수집/저장)
- Grafana (그라파나): 수집된 데이터를 예쁜 그래프로 그려줍니다. (데이터 시각화)
Step 1. Spring Boot 설정 (Micrometer)
Spring Boot Actuator가 기본적으로 내뱉는 데이터(JSON)는 Prometheus가 읽을 수 없는 형식입니다.
중간에서 통역사 역할을 하는 Micrometer 라이브러리를 추가해야 합니다.
1. 의존성 추가 (build.gradle)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// ★ 추가: Actuator 데이터를 Prometheus가 이해하는 포맷으로 변환
implementation 'io.micrometer:micrometer-registry-prometheus'
}
2. 설정 확인 (application.yml)
management:
endpoints:
web:
exposure:
include: "*" # prometheus 엔드포인트도 노출시켜야 함
3. 확인
서버를 실행하고 http://localhost:8080/actuator/prometheus 에 접속해 보세요.
JSON이 아니라, 아래처럼 텍스트 형태의 데이터가 나오면 성공입니다!
# HELP jvm_memory_used_bytes The amount of used memory
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{area="heap",id="G1 Survivor Space",} 1000.0
...
Step 2. Prometheus & Grafana 설치 (Docker)
이 두 프로그램을 윈도우에 직접 설치하는 건 매우 번거롭습니다. Docker를 사용하면 1분 만에 띄울 수 있습니다.
바탕화면이나 편한 곳에 폴더(예: monitoring)를 하나 만들고, 그 안에 파일 2개를 만들어주세요.
사전준비 사항
미리 Docker를 설치해 주세요!
1) prometheus.yml (설정 파일)
Prometheus에게 "데이터를 어디서 가져올지" 알려주는 파일입니다.
global:
scrape_interval: 5s # 5초마다 데이터 수집 (실무에선 보통 15s~1m)
scrape_configs:
- job_name: 'spring-boot'
metrics_path: '/actuator/prometheus' # 스프링 부트 데이터 경로
static_configs:
# ★ 핵심: Docker 내부에서 내 PC(로컬호스트)를 찾으려면
# 'localhost' 대신 'host.docker.internal'을 써야 합니다!
- targets: ['host.docker.internal:8080']
2) docker-compose.yml (실행 파일)
명령어 한 줄로 Prometheus와 Grafana를 동시에 실행시키는 파일입니다.
version: '3'
services:
# 1. 프로메테우스 (데이터 수집)
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml # 위에서 만든 설정 파일 연결
# 2. 그라파나 (시각화 도구)
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin # 초기 비밀번호 설정
3) 실행
폴더 위치에서 터미널(CMD)을 열고 아래 명령어를 입력합니다.
docker-compose up -d
(처음엔 이미지를 다운로드하느라 시간이 조금 걸립니다.)
Step 3. Grafana 대시보드 만들기 (마법의 숫자 4701) 🪄
이제 화면을 띄워봅시다!
- Grafana 접속:
http://localhost:3000 - 로그인:
admin/admin(비밀번호 변경 창이 뜨면 변경하거나 Skip) - 데이터 소스 연결:
- 왼쪽 메뉴
Connections->Data Sources->Add data source클릭. - Prometheus 선택.
- URL에
http://prometheus:9090입력. - (주의: Docker 컨테이너끼리 통신하므로 localhost가 아닌 컨테이너 이름
prometheus를 씁니다.) - 하단
Save & Test클릭 -> 초록색 성공 메시지 확인! ✅
- 왼쪽 메뉴
- 대시보드 가져오기 (Import) ★
- 그래프를 일일이 그릴 필요가 없습니다. 전 세계 개발자들이 이미 만들어 둔 것을 가져오면 됩니다.
- 왼쪽 메뉴
Dashboard->Create Dashboard-> 우측 상단New->Import - Find and import dashboards for common applications at grafana.com/dashboards 칸에 숫자
4701입력 후Load.
- (4701은 'JVM (Micrometer)'라는 아주 유명한 Spring Boot 전용 대시보드 ID입니다.)
- 아래쪽 Prometheus 선택 박스에서 방금 등록한 데이터 소스 선택 ->
Import클릭.
🎉 결과 확인 (NASA 상황실 등판)
짜잔! 🎉
모니터에 뭔가 복잡하고 멋진 그래프들이 춤을 추기 시작합니다.

💡 마무리
이제 여러분은 단순히 "서버 켰어요"가 아니라, "서버의 힙 메모리 추이와 GC 빈도를 시각화하여 모니터링 환경을 구축했습니다"라고 말할 수 있는 개발자가 되었습니다.
Actuator와 Prometheus, Grafana의 조합은 실무(MSA 환경)에서도 거의 표준처럼 쓰이는 기술이니 꼭 한 번 실습해 보시길 바랍니다!
'IT > SpringBoot' 카테고리의 다른 글
| [Spring Boot] "객체 관리는 스프링에게 맡기세요!" 의존성 주입(DI) 완벽 가이드 (0) | 2026.03.08 |
|---|---|
| [Spring Boot] 톰캣(Tomcat)을 따로 설치 안 해도 된다고? 내장 서버의 비밀 (0) | 2026.03.04 |
| [Spring Boot] 서버의 건강검진 리포트, Actuator 완벽 가이드 (0) | 2026.03.03 |
| [Spring Boot] 마법의 비밀, Auto Configuration (자동 설정) (1) | 2026.03.01 |
| [Spring Boot] SpringBoot Starter가 도대체 뭔가요? 의존성 지옥 탈출! (0) | 2026.03.01 |
