리눅스

Redis Cluster 모니터링를 구축하는 방법

변군이글루 2025. 8. 27. 17:05
반응형

Redis Cluster 모니터링를 구축하는 방법

우분투 24.04 기준으로 Redis Cluster + Exporter + Prometheus + Grafana + Node Exporter를 포함한 모니터링 구성을 합니다.

1. 구성도

  • Redis Cluster (cache-232, 233, 234)
    • 각 서버에 Redis 2개 인스턴스 (6381, 6382)
  • Redis Exporter (각 인스턴스별 1개씩 → 총 6개 컨테이너)
  • Node Exporter (각 서버별 1개 → 총 3개 컨테이너)
  • Prometheus + Grafana (cache-234 전용)

2. Redis Exporter 설치(cache-232, cache-233, cache-234)

sudo mkdir -p /docker-container/redis-monitoring
cd /docker-container/redis-monitoring

docker-compose.redis-exporter.yml 각 서버 동일하게 생성

cat <<EOF | sudo tee redis-exporter.yml > /dev/null
services:
  redis-exporter-6381:
    image: oliver006/redis_exporter:latest
	container_name: redis-exporter-6381
    restart: unless-stopped
    environment:
      - REDIS_ADDR=redis://127.0.0.1:6381
      # - REDIS_PASSWORD=yourpassword   # Redis에 인증 설정 시 추가
    command:
      - '--web.listen-address=:9121'      
	network_mode: host
    

  redis-exporter-6382:
    image: oliver006/redis_exporter:latest
	container_name: redis-exporter-6382
    restart: unless-stopped
    environment:
      - REDIS_ADDR=redis://127.0.0.1:6382
      # - REDIS_PASSWORD=yourpassword   # Redis에 인증 설정 시 추가
    command:
      - '--web.listen-address=:9122'      
	network_mode: host
EOF
docker-compose -f redis-exporter.yml up -d

3. Node Exporter 설치(cache-232, cache-233, cache-234)

cat <<EOF | sudo tee node-exporter.yml > /dev/null
services:
  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: unless-stopped
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
      - '--collector.filesystem.ignored-fs-types=^(tmpfs|overlay|aufs|nsfs|squashfs|rpc_pipefs|cgroup2?)$$'
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    ports:
      - "9100:9100"
    network_mode: host
EOF
docker-compose -f node-exporter.yml up -d

4. Prometheus + Grafana 설치 (cache-234 전용)

vim docker-compose.yml
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.enable-lifecycle'
      - '--storage.tsdb.retention.time=200h'
    ports:
      - "9090:9090"
    networks:
      - monitoring-net

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: unless-stopped
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin123}
      - GF_USERS_ALLOW_SIGN_UP=false
    volumes:
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    depends_on:
      - prometheus
    ports:
      - "3000:3000"
    networks:
      - monitoring-net

volumes:
  prometheus_data:
  grafana_data:

networks:
  monitoring-net:
    driver: bridge

Prometheus 설정 파일 (cache-234)

vim prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  # Redis Cluster Exporters
  - job_name: 'redis-instances'
    static_configs:
      - targets:
          - '192.168.0.232:9121' # redis-exporter-232-6381
          - '192.168.0.232:9122' # redis-exporter-232-6382
          - '192.168.0.233:9121' # redis-exporter-233-6381
          - '192.168.0.233:9122' # redis-exporter-233-6382
          - '192.168.0.234:9121' # redis-exporter-234-6381
          - '192.168.0.234:9122' # redis-exporter-234-6382

  # Node Exporters
  - job_name: 'system-metrics'
    static_configs:
      - targets:
          - '192.168.0.232:9100'
          - '192.168.0.233:9100'
          - '192.168.0.234:9100'
docker-compose up -d

5. Grafana 대시보드

Grafana 접속 (ID: admin / PW: admin123)

http://192.168.0.234:3000

Prometheus를 데이터소스로 등록 (http://prometheus:9090)

 

Grafana.com에서 아래 대시보드 가져오기

  • Redis Exporter Dashboard: 763 (Redis Exporter Dashboard by oliver006)
  • Node Exporter Dashboard: 1860 (Node Exporter Full)

Redis Cluster 각 노드/인스턴스 상태, 레플리카 동기화, 메모리 사용량, CPU/디스크/네트워크까지 한 화면에서 모니터링 가능합니다.

 

728x90
반응형