Prometheus란 시간에 따라 수집된 시계열 데이터를 기반으로 하는 모니터링 및 경고 시스템으로, 서버, 컨테이너, 애플리케이션, 마이크로서비스 등에서 메트릭을 수집하고, 이를 저장 및 분석하는 도구이다.
구성 요서
- Prometheus 서버 : 메트릭 데이터를 수집하고 저장하는 핵심 컴포넌트로, 각 애플리케이션 또는 엔드 포인트로부터 데이터를 주기적으로 스크랩하여 시계열 데이터 베이스에 저장한다.
- 시계열 데이터베이스 : 시간에 따라 변화하는 데이터를 효율적으로 저장하고 조회할 수 있도록 최적화된 데이터베이스
- Exporters : 특정 애플리케이션이나 시스템의 메트릭 데이터를 Prometheus가 이해할 수 있는 형식으로 변환해주는 도구 ex) micrometer-registry-prometheus 의존성 추가
- Pushgateway : 짧은 수명의 작업에서 메트릭을 수집하여 Prometheus 서버에 푸시할 수 있으며, 일반적으로 지속적이지 않은 작업에 사용된다. ex) 크론 작업
- AlertManager : Prometheus 서버에서 발생하는 경고를 처리하고, 이메일, slack 등 다양한 방법으로 알림을 보낼 수 있다.
- Grafana : Prometheus 데이터를 시각화하기 위해 자주 사용되는 대시보드 도구
- PromQL : 강력한 쿼리 언어
우선 Prometheus를 사용하기 위한 의존성과 설정을 추가해주자.
implementation 'io.micrometer:micrometer-registry-prometheus'
management:
endpoint:
web:
exposure:
include: '*' # 모든 Actuator endpoint를 웹에 노출시킴 (ex: /actuator/health, /actuator/prometheus)
health:
show-details: always # /actuator/health 호출 시, 세부 상태 정보를 항상 보여줌
prometheus:
access: unrestricted # /actuator/prometheus에 인증 없이 접근 허용 (보안 환경에서는 주의 필요)
global:
scrape_interval: 15s # Prometheus가 모든 타겟의 메트릭을 15초마다 수집하도록 설정
scrape_configs:
- job_name: 'gateway-service' # 'gateway-service'라는 이름의 작업 단위 정의
metrics_path: '/actuator/prometheus' # 메트릭을 수집할 엔드포인트 경로
static_configs:
- targets: [ 'host.docker.internal:{포트 번호}' ] # 수집 대상의 주소와 포트 설정 (현재는 도커에서 호스트로 접근하기 위해 설정함)
services:
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml # 작성한 prometheus.yml 경로로 지정
restart: always
이후 docker-compose up -d 로 prometheus를 받아오면 모든 준비가 끝나게 된다. 이제 해당 애플리케이션을 실행시킨 뒤 http://localhost:9090에 접속해보면

이런 대시보드가 보이게 된다. 여기서 Status -> Targets를 클릭하면

현재 등록한 애플리케이션의 상태를 볼 수 있는데 현재는 애플리케이션을 실행시키지 않아서 DOWN 상태지만, 애플리케이션을 실행시킨뒤 새로고침 해보면

잘 동작하는 것을 볼 수 있다.
이후에는 Grafana를 통해 모니터링을 진행해보겠습니다.
'🔥스파르타 TIL (MSA)' 카테고리의 다른 글
Grafana에서 Loki로 로그를 모니터링 해보자 (feat. 로그 수집 전략) (1) | 2025.04.19 |
---|---|
Grafana를 사용해보자 (1) | 2025.04.18 |
Spring Cloud 란? (5) - Event-Driven Architecture (0) | 2025.03.10 |
Spring Cloud 란? (5) - 분산 추적 (0) | 2025.03.10 |
Spring Cloud 란? (3) - 서킷 브레이커 (1) | 2025.03.08 |