이번 글에서는 서버 자원을 수집하고 시각화하는 방법에 대해 설명합니다.
Node Exporter(데이터 제공) → Prometheus(수집,저장) → Grafana(시각화)
구조로 시스템을 구성하여 서버의 상태를 실시간으로 모니터링할 수 있는 환경을 만들 것입니다.
Node Exporter란?
리눅스 서버의 시스템 자원 메트릭을 수집하여 Prometheus가 가져갈 수 있도록 HTTP 엔드포인트(/metrics)로 노출해주는 Exporter입니다.
docker-compose.yml
version: '3'
services:
node-exporter:
image: prom/node-exporter
container_name: node-exporter
ports:
- "9100:9100"
Metrics란?
메트릭은 시스템 상태나 성능을 수치화한 데이터입니다.
- CPU 사용률
- 메모리 사용량
- 디스크 I/O
- 네트워크 트래픽
이러한 메트릭을 수집하면 서버의 상태를 수치적으로 파악하고, 이상 징후를 탐지하거나 병목 원인을 분석하는 데 유용합니다.
metrics 데이터 구조
# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="user"} 1284.63
node_cpu_seconds_total{cpu="0",mode="system"} 432.11
node_memory_MemAvailable_bytes 514380800
node_disk_reads_completed_total{device="sda"} 109328
Prometheus란?
Prometheus는 시계열(Time-Series) 기반의 모니터링 시스템으로, Metrics 데이터를 Pull 방식으로 주기적으로 수집하여 저장합니다.
prometheus.yml
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['node-exporter:9100']
version: '3'
services:
prometheus:
image: prom/prometheus
network_mode: host
volumes:
- "${PWD}/prometheus:/etc/prometheus"
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-lifecycle'
저장 위치
수집한 데이터는 내부 로컬 디스크에 시계열 DB 형식으로 저장됨 (TSDB)
기본적으로 /prometheus 디렉터리에 저장되며, 도커에서는 볼륨을 마운트하여 지속성 보장
저장 기간
기본 저장 기간은 15일
--storage.tsdb.retention.time 플래그로 조정 가능 (예: 30일)
Grafana란
Grafana는 Elasticsearch, Prometheus 등 다양한 저장소(Data Source)로부터 데이터를 받아 시각화하는 도구입니다.
version: '3'
services:
grafana:
image: grafana/grafana
network_mode: host
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- "${PWD}/grafana_data:/var/lib/grafana"
'n년차 개발자' 카테고리의 다른 글
Spring Boot Logstash 연동 설정 및 작동 방식 (1) | 2025.04.16 |
---|---|
모니터링 시스템 구축 (0) | 2025.04.07 |
AWS SDK 버전 충돌 (0) | 2025.04.05 |
docker mysql 쿼리 결과 파일로 받기 (0) | 2022.10.14 |
Java -Xms -Xmx 옵션 (OutOfMemoryError: Java heap space...) (0) | 2022.09.19 |