모니터링 및 알람

서버 설정 추천

모니터링은 선택이 아니다

서비스 다운 첫 순간 알기 —— 사용자가 와서 말하기 전에

배포 방案 검색...

😰 한밤중 서비스 다운, 아무도 모름

금요일 퇴근 후 서버가 슬그머니 내려갔는데, 월요일 아침에 여럿이 "못 써"라고 반응. 서버 열어봤더니 —— 디스크가 가득 찼고, 로그 파일이 미쳤듯이 증가해서 공간을 다 썼어. 모니터링 알림이 있었으면 금요일 저녁에 통보 받고, 5분이면 처리했을 거야.

Prometheus + Grafana + 경고 알림

Nginx를 리버스 프록시로. 다중 서비스가 80/443 공유 가능. 도메인과 함께 사용.

한 번에 모니터링 스택 배포

docker-compose로 Prometheus, Grafana, Node Exporter 한 번에 세워라:

배포 모니터링 스택
# 모니터링 디렉토리 생성
docker-compose.yml — 모니터링 스택
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./alert_rules.yml:/etc/prometheus/alert_rules.yml
      - prometheus_data:/prometheus
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--storage.tsdb.retention.time=30d"

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    ports:
      - "3001:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=your_secure_password

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: always
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - "--path.procfs=/host/proc"
      - "--path.sysfs=/host/sys"
      - "--path.rootfs=/rootfs"

  alertmanager:
    image: prom/alertmanager:latest
    container_name: alertmanager
    restart: always
    ports:
      - "9093:9093"
    volumes:
      - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml

volumes:
  prometheus_data:
  grafana_data:

Prometheus 설정

prometheus.yml
global:

알림 규칙

alert_rules.yml — 경고 규칙
groups:

알림 통보 설정

알림 발생하면 어떻게 통보할 거? 이메일 보내거나, 딩딩/기업 위챗/Slack으로 푸시:

alertmanager.yml — 알림 설정
global:
이 튜토리얼이 도움 됐나?