Prometheus 및 Grafana 설정 구현

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

이번 강의에서는 Prometheus를 설정하고 이를 Grafana와 통합하는 방법을 다루겠습니다. 이후, Docker Compose를 사용하여 Prometheus와 Grafana를 설정하고, 이를 통해 마이크로서비스의 메트릭스를 모니터링하는 데모를 살펴보겠습니다.

1. 기존 마이크로서비스 중지

먼저, 현재 실행 중인 모든 마이크로서비스 인스턴스를 중지합니다. 이를 통해 새로운 설정을 테스트할 수 있는 깨끗한 환경을 마련합니다.

docker-compose down

2. Prometheus 설정 파일 추가

이제 Prometheus 설정 파일을 추가합니다. observability 폴더 안에 prometheus 폴더를 생성하고, 그 안에 prometheus.yml 파일을 추가합니다.

mkdir -p observability/prometheus
touch observability/prometheus/prometheus.yml

prometheus.yml 파일 내용:

global:
  scrape_interval: 5s
  evaluation_interval: 5s

scrape_configs:
  - job_name: 'accounts'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['accounts:8080']

  - job_name: 'loans'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['loans:8090']

  - job_name: 'cards'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['cards:9000']

  - job_name: 'gateway'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['gatewayserver:8072']

  - job_name: 'eureka'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['eurekaserver:8070']

  - job_name: 'config'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['configserver:8071']
  • Global 설정: scrape_intervalevaluation_interval을 각각 5초로 설정하여 Prometheus가 5초마다 메트릭스를 수집하고 평가하도록 합니다.
  • Scrape Configs: 각 마이크로서비스(Accounts, Loans, Cards, Gateway, Eureka, Config Server)의 메트릭스 엔드포인트와 포트를 설정합니다.

3. Docker Compose 파일 수정

prometheus 서비스를 추가하여 Docker Compose 파일을 업데이트합니다.

Docker Compose 파일 업데이트:

docker-compose.yml 파일을 열고, Grafana 서비스 위에 Prometheus 서비스를 추가합니다.

services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./observability/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    networks:
      - easybank

  grafana:
    # ... 기존 Grafana 설정
    volumes:
      - ./observability/grafana/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml
  • Prometheus 서비스: prom/prometheus:latest 이미지를 사용하여 Prometheus를 설정합니다. 이 서비스는 포트 9090에서 실행되며, 이전에 생성한 prometheus.yml 파일을 컨테이너 내의 /etc/prometheus/prometheus.yml 경로로 복사합니다.
  • Grafana 서비스: Grafana 서비스는 Prometheus와 Loki 데이터 소스를 읽을 수 있도록 설정됩니다.

4. Grafana와 Prometheus 연동 설정

Grafana와 Prometheus를 연동하기 위해 datasource.yml 파일을 설정합니다.

Grafana 설정 파일 추가:

observability/grafana 폴더를 생성하고, datasource.yml 파일을 추가합니다.

mkdir -p observability/grafana
touch observability/grafana/datasource.yml

datasource.yml 파일 내용:

apiVersion: 1

deleteDatasources:
  - name: Prometheus
  - name: Loki

datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus:9090
    isDefault: true
    editable: true

  - name: Loki
    type: loki
    access: proxy
    url: http://loki:3100
    isDefault: false
    editable: true
  • Prometheus 데이터 소스: Prometheus 데이터 소스를 Grafana에 추가합니다. url에서 Prometheus가 실행 중인 위치를 지정합니다.
  • Loki 데이터 소스: 이전에 설정된 Loki 데이터 소스를 정의합니다.

5. Docker Compose 실행

모든 설정이 완료되었으므로 Docker Compose를 사용하여 모든 서비스를 시작합니다.

docker-compose up -d

이 명령어로 Prometheus와 Grafana를 포함한 모든 서비스를 백그라운드에서 실행합니다.

6. Prometheus 및 Grafana 데모

Docker Compose가 모든 서비스를 성공적으로 시작한 후, 브라우저에서 Prometheus와 Grafana를 확인할 수 있습니다.

  • Prometheus UI 확인: http://localhost:9090 에서 Prometheus UI에 접근할 수 있습니다.
  • Grafana UI 확인: http://localhost:3000 에서 Grafana UI에 접근할 수 있으며, admin/admin 으로 로그인 후 대시보드를 설정할 수 있습니다.

결론

이번 강의에서는 Prometheus와 Grafana를 설정하고, 이를 통해 마이크로서비스의 메트릭스를 모니터링하는 방법을 살펴보았습니다. 다음 강의에서는 Grafana에서 대시보드를 설정하고 메트릭스를 시각화하는 방법을 다루겠습니다.

profile
무슨 생각하며 사니

0개의 댓글