6. 모니터링 설정

1. 모니터링

CI/CD의 목표는 코드를 신속하고 안정적으로 배포하는 것입니다. 하지만 배포가 성공했다고 해서 모든 과정이 끝나는 것은 아닙니다. 새로운 코드에 의해 시스템 성능이 저하되거나 오류가 발생할 수 있습니다.

CI/CD 파이프라인에서 모니터링 단계는 이러한 문제를 실시간으로 감지하고 시스템의 건강 상태와 성능을 지속적으로 확인하는 핵심 과정입니다. 이 단계를 통해 배포된 애플리케이션의 문제를 조기에 발견하고, 안정적인 서비스를 유지할 수 있습니다.

2. 프로메테우스 & 그라파나

프로메테우스

CI/CD에서 대표적으로 사용되는 모니터링 도구로, 주기적으로 어플리케이션 및 인프라의 메트릭(CPU, 메모리 사용량 및 요청 수)을 가져와서 보관합니다.

프로메테우스는 자체 쿼리 언어(PromQL)를 사용하여 데이터를 분석하고, 경고를 보낼 수 있습니다.

그라파나

프로메테우스에 저장된 데이터를 시각화하여 표현하는 대시보드 툴입니다. 사용자가 데이터를 쉽게 분석할 수 있도록 다양한 그래프와 시각화 요소를 제공합니다.

1) 프로메테우스 & 그라파나 서버 설치

  • 테라폼 스크립트 코드 예시

2) 프로메테우스 플러그인 설치

  • Prometheus metrics

3) 프로메테우스 서버 접속

  • aws-public-ip:9090

4) 프로메테우스 명령어

이번장에서 프로메테우스의 promQL에 대해서는 자세히 다루지 않습니다.

  • up → exporter가 정상 동작하는지 (1=정상, 0=비정상)

  • node_cpu_seconds_total → CPU 사용량 (Node Exporter)

  • node_memory_MemAvailable_bytes → 사용 가능한 메모리

  • mysql_global_status_connections → 현재 DB 연결 수 (MySQLd Exporter)

  • mysql_global_status_queries → 초당 쿼리 실행 횟수

  • rate(node_cpu_seconds_total{mode="user", job="mysql-db-node"}[5m])

    • 초당 user 모드 CPU 사용량

  • 1 - (node_memory_MemAvailable_bytes{job="mysql-db-node"} / node_memory_MemTotal_bytes{job="mysql-db-node"})

    • 메모리 사용률

  • (node_filesystem_size_bytes{fstype!="tmpfs",job="mysql-db-node"}

    -node_filesystem_free_bytes{fstype!="tmpfs",job="mysql-db-node"}) / node_filesystem_size_bytes{fstype!="tmpfs",job="mysql-db-node"}

    • 디스크 사용률

5) 그라파나 서버 접속

aws-public-ip:3000

admin/admin

6) 프로메테우스 연동

  • connections - data sources - Prometheus 선택

7) 대쉬보드 추가

  • dashboards - import - ID선택 - 1860 / 7362 입력

    • 각 어플리케이션의 NodeExporter를 통해 데이터를 수집

  • select data source - 프로메테우스 선택

8) 대쉬보드 확인

  • job의 mysql-db-node와 production-node를 변경해가면서 서버의 상태를 모니터링한다.

  • cpu 사용률, 디스크 용량등을 모니터링하여 문제가 발생하기 전 조기에 대응한다.

9) 알림설정

Last updated