메트릭 기반 모니터링 Prometheus

날아올라돼지야·2024년 8월 29일
0

이 강의에서는 두 번째 관찰 가능성과 모니터링의 기둥인 메트릭에 대해 설명합니다. 로그만으로는 애플리케이션을 모니터링하는 데 한계가 있기 때문에 CPU 사용량, 메모리 사용량, 스레드, 연결, 오류 등의 다양한 메트릭을 수집하고 분석하여 애플리케이션의 전반적인 상태를 파악할 수 있습니다.

1. Spring Boot Actuator 설정

Spring Boot Actuator는 애플리케이션의 메트릭스를 노출하는 역할을 합니다. 이 설정을 통해 /actuator/metrics 경로에서 다양한 메트릭을 확인할 수 있습니다.

pom.xml에 Actuator 종속성 추가:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Actuator를 추가한 후, 애플리케이션을 실행하고 브라우저에서 /actuator/metrics 경로를 탐색하여 메트릭을 확인할 수 있습니다.

2. Micrometer 설정

Micrometer는 Actuator가 노출하는 메트릭을 Prometheus와 같은 모니터링 시스템이 이해할 수 있는 형식으로 변환합니다.

pom.xml에 Micrometer 및 Prometheus 종속성 추가:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

이 종속성을 추가하면 Micrometer가 Prometheus에 적합한 형식으로 메트릭을 자동으로 노출하게 됩니다.

3. Prometheus 설정

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초마다 마이크로서비스에서 메트릭을 수집하도록 지정합니다.

Prometheus Docker 설정

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

4. Grafana와 Prometheus 통합

Grafana는 Prometheus에서 수집한 메트릭을 기반으로 대시보드를 만들고 알림 및 알림을 설정할 수 있게 해줍니다.

Grafana에서 Prometheus 데이터 소스 설정

localhost:3000에서 Grafana UI에 접속한 후, Prometheus를 데이터 소스로 추가합니다.

  1. 데이터 소스 추가:
    • Configuration > Data Sources > Add data source 클릭
    • Prometheus 선택
    • URLhttp://prometheus:9090 입력
    • Save & Test 버튼 클릭하여 설정 저장

Grafana에서 대시보드 생성

Prometheus에서 수집한 메트릭을 기반으로 Grafana에서 대시보드를 생성할 수 있습니다.

  1. 대시보드 생성:
    • Create > Dashboard > Add New Panel 클릭
    • 메트릭스 쿼리 작성 (Prometheus 데이터 소스 선택 후, 쿼리 작성)
    • 대시보드에 다양한 차트를 추가하여 마이크로서비스의 상태를 모니터링

5. Docker Compose 실행

모든 설정이 완료되었으므로 docker-compose.yml 파일을 통해 모든 서비스를 시작합니다.

docker-compose -f docker-compose.yml up -d

이 명령어를 실행하면 Prometheus와 Grafana가 함께 실행되며, Prometheus가 마이크로서비스의 메트릭을 수집하고 Grafana에서 이를 시각화할 수 있습니다.

6. Prometheus 및 Grafana에서 메트릭 모니터링

localhost:9090에서 Prometheus UI에 접속하여 메트릭을 직접 쿼리할 수 있으며, localhost:3000에서 Grafana를 통해 대시보드를 확인할 수 있습니다.

이와 같이, 메트릭 기반 모니터링을 설정하여 마이크로서비스의 전반적인 상태를 실시간으로 모니터링할 수 있습니다. 다음 강의에서는 알림 및 알림 설정에 대해 다루겠습니다.

profile
무슨 생각하며 사니

0개의 댓글