서버 모니터링 가이드

서버가 느려지거나 응답이 없을 때, 어떤 자원이 병목인지 빠르게 파악할 수 있어야 합니다.
OS별 기본 도구만으로도 대부분의 성능 문제를 진단할 수 있습니다.

반드시 점검해야 하는 4가지 지표

CPU 사용률

지속적으로 80% 이상이면 처리량 한계.
Load Average가 코어 수보다 크면 대기 작업이 누적된 상태.

메모리 (RAM)

Available 0 근접 + Swap 사용 증가 시 부족 위험.
OOM Killer가 프로세스를 강제 종료할 수 있음.

디스크 용량 / I/O

85% 초과 시 정리 권장. 100% 도달 시 서비스 중단.
I/O Wait이 높으면 디스크 병목.

네트워크 트래픽

급격한 outbound 증가는 외부 공격 또는 의도치 않은 백업 작업 가능성.

Ubuntu — CLI 모니터링

⚡ top — 실시간 프로세스 / CPU / 메모리

실행
$top

실행 후 키 입력으로 정렬 가능: P CPU 정렬,M 메모리 정렬,q 종료.

Load Average: 1분 / 5분 / 15분 평균 작업량. CPU 코어 수보다 크면 부하 과다.

🌈 htop — 컬러풀한 향상판 (권장)

설치 + 실행
$sudo apt install -y htop && htop

화살표로 프로세스 선택, F9 종료(Kill),F5 트리 보기.

💾 메모리 / 디스크 빠른 점검

메모리 사용량 (사람이 읽기 쉬운 단위)
$free -h
디스크 사용량
$df -h
현재 폴더 용량 (TOP 10)
$du -sh * 2>/dev/null | sort -hr | head

📈 I/O · 네트워크 · 시스템 로그

디스크 I/O (5초 간격)
$iostat -x 5
네트워크 트래픽 (실시간)
$vnstat -l
최근 시스템 로그 (오류만)
$sudo journalctl -p err -n 50
OOM Killer 로그 확인
$sudo dmesg -T | grep -i "killed process"

Windows Server 모니터링

🖥️ 1. 작업 관리자 (Task Manager)

Ctrl + Shift + Esc 또는Ctrl + Alt + Del → 작업 관리자
성능 탭에서 CPU/메모리/디스크/이더넷 그래프를 실시간 확인.

📊 2. 리소스 모니터 (Resource Monitor)

실행 창 (Win + R)에서:

실행 명령
resmon

프로세스별 디스크 I/O, 네트워크 사용량, 메모리 페이지 폴트까지 상세 분석.

📜 3. 이벤트 뷰어 (Event Viewer)

시작 메뉴 → 이벤트 뷰어 검색Windows 로그 → 시스템 / 응용 프로그램
오류·경고 항목을 통해 서비스 다운, 메모리 누수, 디스크 오류 등 원인 추적 가능.

⚡ 4. PowerShell 빠른 점검

CPU 상위 5개 프로세스
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
메모리 상위 5개 프로세스 (MB)
Get-Process | Sort-Object WS -Descending | Select-Object -First 5 Name, @{N='MB';E={[math]::Round($_.WS/1MB,1)}}
디스크 사용량 (드라이브별)
Get-PSDrive -PSProvider FileSystem | Select-Object Name, Used, Free

자동 알림 — 임계치 도달 시 통보

매번 직접 확인하지 않고도 임계치 초과 시 슬랙·이메일로 알림을 받도록 구성할 수 있습니다.

🐧 Ubuntu — 디스크 사용률 90% 초과 시 슬랙 알림 (cron)

1. 알림 스크립트 생성
sudo tee /usr/local/bin/disk-alert.sh > /dev/null <<'EOF' #!/bin/bash USAGE=$(df / | tail -1 | awk '{print $5}' | tr -d '%') if [ "$USAGE" -gt 90 ]; then curl -X POST -H 'Content-type: application/json' \ --data "{\"text\":\"⚠️ 디스크 사용률 ${USAGE}%\"}" \ https://hooks.slack.com/services/XXX fi EOF
2. 실행 권한 + 매시간 cron 등록
$sudo chmod +x /usr/local/bin/disk-alert.sh && (crontab -l 2>/dev/null; echo "0 * * * * /usr/local/bin/disk-alert.sh") | crontab -

고급 옵션: 본격적인 모니터링이 필요하다면 Netdata, Grafana + Prometheus, Zabbix 같은 오픈소스 솔루션을 도입하세요. Netdata는 apt install netdata 한 줄로 설치 가능.

서버가 느려졌을 때 진단 순서

  1. 1Load Average 확인 — 코어 수보다 큰가? (top / uptime)
  2. 2CPU·메모리 점유 1위 프로세스 확인 — htop / top
  3. 3Swap 사용량 / Available 메모리 확인 — free -h
  4. 4디스크 가득 참 여부 확인 — df -h (특히 / 와 /var)
  5. 5I/O Wait 확인 — top 상단 %wa (5% 이하 정상)
  6. 6최근 오류 로그 점검 — journalctl / 이벤트 뷰어
  7. 7외부 트래픽 이상 — DDoS / 비정상 요청 여부 확인