이 강의에서는 두 번째 관찰 가능성과 모니터링의 기둥인 메트릭에 대해 설명합니다. 로그만으로는 애플리케이션을 모니터링하는 데 한계가 있기 때문에 CPU 사용량, 메모리 사용량, 스레드, 연결, 오류 등의 다양한 메트릭을 수집하고 분석하여 애플리케이션의 전반적인 상태를 파악할 수 있습니다.
Spring Boot Actuator는 애플리케이션의 메트릭스를 노출하는 역할을 합니다. 이 설정을 통해 /actuator/metrics
경로에서 다양한 메트릭을 확인할 수 있습니다.
pom.xml
에 Actuator 종속성 추가:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Actuator를 추가한 후, 애플리케이션을 실행하고 브라우저에서 /actuator/metrics
경로를 탐색하여 메트릭을 확인할 수 있습니다.
Micrometer는 Actuator가 노출하는 메트릭을 Prometheus와 같은 모니터링 시스템이 이해할 수 있는 형식으로 변환합니다.
pom.xml
에 Micrometer 및 Prometheus 종속성 추가:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
이 종속성을 추가하면 Micrometer가 Prometheus에 적합한 형식으로 메트릭을 자동으로 노출하게 됩니다.
Prometheus는 마이크로서비스의 메트릭을 수집하고 중앙 집중화하여 모니터링을 용이하게 합니다.
먼저 prometheus.yml
파일을 생성합니다. 이 파일에는 Prometheus가 메트릭을 수집할 대상과 관련된 설정이 포함됩니다.
observability/prometheus/prometheus.yml
파일 생성:
global:
scrape_interval: 15s # 15초마다 메트릭스를 수집합니다.
scrape_configs:
- job_name: 'spring-boot-actuator'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['gateway-server:8080', 'accounts-service:8081', 'cards-service:8082', 'loans-service:8083']
위 설정은 Prometheus가 15초마다 마이크로서비스에서 메트릭을 수집하도록 지정합니다.
docker-compose.yml
파일에 Prometheus 서비스를 추가합니다.
docker-compose.yml
에 Prometheus 서비스 추가:
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./observability/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
networks:
- eazybank-network
Grafana는 Prometheus에서 수집한 메트릭을 기반으로 대시보드를 만들고 알림 및 알림을 설정할 수 있게 해줍니다.
localhost:3000
에서 Grafana UI에 접속한 후, Prometheus를 데이터 소스로 추가합니다.
Configuration
> Data Sources
> Add data source
클릭Prometheus
선택URL
에 http://prometheus:9090
입력Save & Test
버튼 클릭하여 설정 저장Prometheus에서 수집한 메트릭을 기반으로 Grafana에서 대시보드를 생성할 수 있습니다.
Create
> Dashboard
> Add New Panel
클릭Prometheus 데이터 소스 선택 후, 쿼리 작성
)모든 설정이 완료되었으므로 docker-compose.yml
파일을 통해 모든 서비스를 시작합니다.
docker-compose -f docker-compose.yml up -d
이 명령어를 실행하면 Prometheus와 Grafana가 함께 실행되며, Prometheus가 마이크로서비스의 메트릭을 수집하고 Grafana에서 이를 시각화할 수 있습니다.
localhost:9090
에서 Prometheus UI에 접속하여 메트릭을 직접 쿼리할 수 있으며, localhost:3000
에서 Grafana를 통해 대시보드를 확인할 수 있습니다.
이와 같이, 메트릭 기반 모니터링을 설정하여 마이크로서비스의 전반적인 상태를 실시간으로 모니터링할 수 있습니다. 다음 강의에서는 알림 및 알림 설정에 대해 다루겠습니다.