🦊

Unifox 시연회 프로젝트

제작동기

노트북을 사용하다가, 갑자기 렉이 걸리는 경우가 종종 발생했다. 이런 문제는 보통 CPU의 사용량이 높거나, 메모리가 부족하거나, 디스크 공간이 꽉 찼을 때 생기는 경우가 많았다.

하지만 직접 작업 관리자를 열어서 매번 확인하는 것은 불편하고 번거로웠다.

이 문제를 어떻게 하면 조금 더 완화 시킬 수 있을까 고민하다가 이 프로젝트를 제작하게 되었다.

프로젝트 설명

컴퓨터의 CPU, RAM, 디스크 사용량을 자동으로 확인하고, 일정 퍼센트를 넘으면 Slack으로 알림을 보내는 시스템을 구축하게 되었다. 이렇게 하면 노트북의 상태를 실시간으로 확인할 수 있음과 동시에 문제가 생기기 전에 대비와 문제가 생겼을 때 알림이 오도록 설정하여서 어떤 문제가 발생하였는지 빠르게 대처할 수 있을것이다.

또한, Docker Compose를 사용해 실행할 수 있도록 구성하여, 한 번 설정하면 쉽게 실행하고 정지할 수 있도록 만들었다. node exporter를 사용해 다양한 시스템 정보를 수집한 후 Prometheus를 사용해 모든 데이터를 중앙에서 관리하게 설정한다. 그 후 Grafana를 이용해서 데이터를 시각적으로 확인할 수 있게 하여, 그래프 형태로 보기 쉽게 정리했다.

docker-compose.yml

version: "3"

networks:
  t4y:
    driver: bridge

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    volumes:
      - /Users/bonwoo/Docker-Complete/prometheus.yml:/etc/prometheus/prometheus.yml  # 올바른 파일 경로로 수정
      - prometheus-data:/prometheus
    ports:
      - 9090:9090
    command:
      - '--storage.tsdb.path=/prometheus'
      - '--config.file=/etc/prometheus/prometheus.yml'
    restart: always
    networks:
      - t4y

  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - 3000:3000
    volumes:
      - grafana-data:/var/lib/grafana
      - ./grafana/provisioning/:/etc/grafana/provisioning/
    restart: always
    depends_on:
      - prometheus
    networks:
      - t4y

  node_exporter:
    image: prom/node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    ports:
      - "9100:9100"
    networks:
      - t4y

volumes:
  grafana-data:
  prometheus-data:

prometheus.yml

global:
  scrape_interval: 15s
  scrape_timeout: 15s
  evaluation_interval: 2m

  external_labels:
    monitor: 'codelab-monitor'
    query_log_file: query_log_file.log

scrape_configs:
  - job_name: 'monitoring-item'
    scrape_interval: 10s
    scrape_timeout: 10s
    metrics_path: '/metrics'
    scheme: 'http'

    static_configs:
      - targets: ['prometheus:9090', 'node_exporter:9100']
        labels:
          service: 'monitor'

시연 영상

느낀점

이 프로젝트를 하면서 가장 큰 장점은 도커 컴포즈를 사용해 여러 프로그램을 한 번에 설정하고 실행할 수 있는 점이 가장 큰 장점이라고 생각했습니다. 그 덕분에 각 서비스를 하나하나 설치하고 연결하는 번거로움 없이 쉽게 환경을 구축할 수 있었고 또한, 프로메테우스를 사용해 서버의 CPU 사용률, 메모리, 디스크 사용량을 실시간으로 모니터링할 수 있었고, 그라파나를 통해 이 데이터를 보기 쉽게 시각화할 수 있었다. 이렇게 모니터링한 데이터를 바탕으로, CPU나 메모리 사용률이 20%를 넘으면 슬랙으로 알림이 가도록 설정했는데, 이 알림 시스템 덕분에 노트북의 CPU, 메모리, 디스크 사용률을 빠르게 파악하고 대응할 수 있었습니다. 자동화된 모니터링과 알림 시스템이 정말 중요하다는 것을 실감했고, 시스템 관리의 효율성을 높이는 데 큰 도움이 되었다.