Experience/LG CNS AM Inspire Camp 1기

[LG CNS AM Inspire Camp] 26. Node Exporter부터 Grafana까지 시스템 모니터링 파이프라인 구축하기

chillmyh 2025. 5. 14. 23:35

1. 들어가며

어떤 시스템이든 안정적으로 운영되기 위해서는, 현재 CPU 사용률이 어떤지, 메모리는 얼마나 쓰는지, 디스크 공간은 얼마나 남았는지 같은
시스템 자원 상태를 실시간으로 확인할 수 있는 모니터링 체계가 필요하다.

 이 글에서는 최종 프로젝트의 관제 시스템을 만들기 위해 필수요소인 대표적인 오픈소스 기반의 시스템 모니터링 툴체인 Node Exporter + Prometheus + Grafana를 중심으로 각각의 역할과 구성 방법을 정리해본다. 

 

2. 구성요소 개요

2.1 Node Exporter

Node Exporter는 리눅스 서버의 시스템 정보를 수집해주는 lightweight exporter다. CPU, Memory, Disk, Network, Load Average, Uptime 등 노드 단위의 시스템 자원 상태를 수집하여 Prometheus가 수집할 수 있도록 제공한다.

 

2.2 Prometheus

Prometheus는 CNCF(Cloud Native Computing Foundation : 리눅스 재단 소속 비영리 단체)에서 관리하는 오픈소스 모니터링 도구다. Exporter로부터 주기적으로 메트릭을 pull 방식으로 수집하고, 내부 TSDB에 저장하며, 쿼리 언어인 PromQL을 통해 데이터를 조회할 수 있다. 물론 Node Exporter 말고 Spring Actuator의 메트릭도 수집 가능하다.

 

2.3 Grafana

Prometheus에 저장된 메트릭을 시각화하기 위해 사용하는 대시보드 도구다.

풍부한 시각화 컴포넌트와 커뮤니티 템플릿을 통해 데이터를 직관적이고 유의미하게 시각화할 수 있다.

 

이들을 통해 단순히 리소스만 보는 것이 아니라, 특정 시간대에 부하가 몰리는 패턴을 시각화하고, grafana의 Alert manager를 활용해서 알람 조건을 등록 후 자동으로 Slack, 이메일 등으로 통보. 나아가 장애 발생 시 빠르게 근본 원인을 파악할 수 있다.

3. 설치 및 설정 흐름

3.1 Node Exporter 설치

# 최신 릴리스 다운로드
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
cd node_exporter-1.7.0.linux-amd64

# 백그라운드 실행
./node_exporter &

Node Exporter는 기본적으로 9100 포트를 통해 메트릭을 제공한다.
브라우저에서 http://<서버IP>:9100/metrics로 접속하면 수집되는 메트릭을 확인할 수 있다.

 

3.2 Prometheus 설치 및 설정

# 설치
wget https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gz
tar xvfz prometheus-2.52.0.linux-amd64.tar.gz
cd prometheus-2.52.0.linux-amd64

 

# prometheus.yml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['localhost:9100']

 

#설정 마친 후 실행
./prometheus --config.file=prometheus.yml

 

웹 UI는 기본 포트 9090에서 실행되며, http://localhost:9090 으로 접속할 수 있다.

 

3.3 Grafana 설치 및 설정

Grafana는 다양한 방식으로 설치할 수 있지만, 가장 쉬운 방법은 Docker다.

docker run -d -p 3000:3000 grafana/grafana

 

접속: http://localhost:3000
기본 계정: admin / admin

Prometheus 데이터 소스 연결

  1. 좌측 사이드바 → "Connections" → "Add data source"
  2. Prometheus 선택
  3. URL에 http://<Prometheus-IP>:9090 입력 후 저장

이제 Prometheus에서 수집한 메트릭을 기반으로 대시보드를 구성할 수 있다.

 

4. 주요 메트릭 예시

 

Node Exporter는 아래와 같은 수치를 제공한다.

항목 PromQL 예시
CPU 사용률 100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
메모리 사용 node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes
디스크 사용 node_filesystem_avail_bytes vs node_filesystem_size_bytes
Load 평균 node_load1, node_load5, node_load15

 

5. 마무리

Node Exporter, Prometheus, Grafana는 복잡한 설정 없이도 서버 자원의 실시간 상태를 수집 → 저장 → 분석 → 시각화하는 전체 파이프라인을 구축할 수 있는 강력한 도구 조합이다. 이러한 체계는 단순한 시각화를 넘어서, 장애 예방, 성능 튜닝, 운영 안정성 확보라는 관점에서도 매우 중요하다.