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, 메모리, 디스크 사용률을 빠르게 파악하고 대응할 수 있었습니다. 자동화된 모니터링과 알림 시스템이 정말 중요하다는 것을 실감했고, 시스템 관리의 효율성을 높이는 데 큰 도움이 되었다.