배경 및 목표
Spring Boot Actuator는 Spring Boot 애플리케이션의 상태, 성능, 메트릭 등을 모니터링하고 관리할 수 있는 기능을 제공하는 라이브러리이다. 다양한 엔드포인트를 통해 애플리케이션 내부 상태를 노출하며, 개발 및 운영 환경에서 중요한 정보에 쉽게 접근할 수 있게 도와준다.
구성 요소 | 설명 |
Spring Boot 애플리케이션 | Actuator를 통해 HTTP 요청 수, 응답 시간, 메모리 사용량 등의 메트릭 데이터를 노출 |
Prometheus | Spring Boot Actuator에서 제공하는 메트릭 데이터를 수집하고 저장 |
Grafana | Prometheus에서 수집한 데이터를 기반으로 대시보드를 생성 |
Spring Boot Actuator 모니터링 설정
개발환경
항목 | 설정 |
Java | 17 |
Spring Boot | 3.1.5 |
Gradle Kotlin | 1.9.20 |
Monitoring | Prometheus, Grafana |
Dash Board | Spring Boot 대시보드 템플릿 (ID: 4701) |
구조
coupon-project/
├── docker-compose.yml
│
├── kakaoshop-BE/
│ ├── build.gradle # 애플리케이션 의존성
│ └── src/main/resources/
│ └── application-docker.yml # 프로필 설정
│
├── coupon-BE/
│ ├── build.gradle.kts # 의존성 추가
│ ├── coupon-core/
│ │ └── src/main/resources/
│ │ └── application-docker.yml # 프로필 설정
│ └── coupon-consumer/
│ └── src/main/resources/
│ └── application-docker.yml # 프로필 설정
│
└── _monitoring/
├── prometheus/
│ └── config/prometheus.yml # Prometheus 설정
└── docker-compose.yml # 모니터링 환경 구성
Java
복사
파일명 | 내용 |
build.gradle | Spring Boot 애플리케이션 의존성 설정 |
application-docker.yml | Spring 프로필 설정 |
prometheus.yml | Prometheus 메트릭 수집 설정 |
docker-compose.yml | Prometheus 및 Grafana 컨테이너 설정 |
구현
0. 환경 사전 준비
•
Spring 애플리케이션 서버와 Prometheus 및 Grafana 설치 되어 있어야 한다.
1. Spring Boot 애플리케이션 설정
Gradle 의존성 추가
Spring Boot에서 기본적으로 spring-boot-starter-actuator 라이브러리를 사용하여 Prometheus 메트릭을 노출할 수 있다. 아래와 같이 build.gradle 파일에 다음 의존성을 추가한다.
•
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator' // Actuator 라이브러리
implementation 'io.micrometer:micrometer-registry-prometheus' // Prometheus 연동
}
Groovy
복사
Actuator 및 Prometheus 설정
Spring Actuator와 Prometheus를 위한 설정 추가한다.
•
applicaion.yml
management:
metrics:
tags:
application: ${spring.application.name} # 애플리케이션 이름 태그 추가
endpoints:
web:
exposure:
include: "*" # 모든 엔드포인트 노출
endpoint:
prometheus:
enabled: true # Prometheus 엔드포인트 활성화
health:
livenessstate:
enabled: true # Liveness 상태 활성화
readinessstate:
enabled: true # Readiness 상태 활성화
YAML
복사
Prometheus metric 확인:
각 애플리케이션의 Prometheus 메트릭을 확인한다.
•
http://localhost:8080/actuator/prometheus (kakao-be)
•
http://localhost:8081/actuator/prometheus (coupon-api)
•
http://localhost:8082/actuator/prometheus (coupon-consumer)
kakao-be 메트릭 확인
coupon-api 메트릭 확인
coupon-consumer 메트릭 확인
2. Prometheus 설정
Prometheus가 각 Spring Boot 애플리케이션의 메트릭을 수집할 수 있도록 설정한다.
•
prometheus.yml
scrape_configs:
- job_name: 'kakao-be'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['kakao-be:8080']
- job_name: 'coupon-api'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['coupon-api:8081']
- job_name: 'coupon-consumer'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['coupon-consumer:8082']
YAML
복사
Prometheus 설정 변경 후 컨테이너를 재시작하여 설정을 반영한다.
docker-compose restart prometheus
Groovy
복사
모니터링 컨테이너 확인:
docker logs prometheus
docker logs grafana
Bash
복사
Prometheus 설정 확인:
Prometheus 페이지에서 각 대상 애플리케이션의 메트릭을 수집 상태를 확인한다.
http://localhost:9090/targets
Groovy
복사
3. Grafana 대시보드 설정
데이터 소스 추가
1.
Grafana 접속: http://<Grafana-Server-IP>:3000
2.
Data sources › Add data source > Prometheus 선택
3.
URL 지정
•
URL: http://<Prometheus-Server-IP>:9090 (Docker 네트워크 기준)
host.docker.internal:9090
prometheus:9090
host.docker.internal은 Docker 컨테이너에서 호스트 머신에 접근할 수 있도록 제공되는 특별한 DNS 이름이다. host.docker.internal을 사용하면, 컨테이너에서 호스트 머신의 IP 주소를 명시하지 않고도 접근할 수 있다.
•
로컬 환경에서 Docker 컨테이너와 호스트 간 통신을 위해 host.docker.internal이 필요할 수 있다.
•
그러나 Prometheus와 Grafana가 동일한 Docker 네트워크에서 실행 중이라면, http://prometheus:9090을 사용하는 것이 권장된다.
4.
Save & Test 클릭
대시보드 설정하기
1.
Dashboards > New > Import 클릭하기
2.
Grafana에서 대시보드 가져오기
•
대시보드 ID: 4701
대시보드 ID 입력
3.
데이터 소스 설정하기
위에서 설정한 데이터 소스를 지정한다.
Grafana 대시보드 확인:
데이터 소스 추가 후 Spring Boot Dashboard(ID: 4701) 확인하기
kakao-be 대시보드
coupon-consumer 대시보드
coupon-api 대시보드
Tip:
•
Prometheus 볼륨 데이터(/prometheus/volume/) 삭제
•
Docker 이미지 및 컨테이너 캐시 삭제
•
브라우저 캐시 삭제
결론
주요 메트릭
•
확인 과정
모니터링 컨테이너 확인:
docker logs prometheus
docker logs grafana
Bash
복사
Prometheus metric 확인:
각 애플리케이션의 Prometheus 메트릭을 확인한다.
•
http://localhost:8080/actuator/prometheus (kakao-be)
•
http://localhost:8081/actuator/prometheus (coupon-api)
•
http://localhost:8082/actuator/prometheus (coupon-consumer)
kakao-be 메트릭 확인
coupon-api 메트릭 확인
coupon-consumer 메트릭 확인
Prometheus 설정 확인:
Prometheus 페이지에서 각 대상 애플리케이션의 메트릭을 수집 상태를 확인한다.
http://localhost:9090/targets
Groovy
복사
Grafana 대시보드 확인:
데이터 소스 추가 후 Spring Boot Dashboard(ID: 4701) 확인하기
kakao-be 대시보드
coupon-consumer 대시보드
coupon-api 대시보드
Related Posts
Search