← 전체 목록
서버백업운영

디스크 사용량 자동 모니터링으로 다운 전에 미리 대응합니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.

서버 디스크 사용량 자동 모니터링의 필요성을 실감한 건 새벽 2시에 병원 직원에게 “예약 시스템이 안 된다”는 연락을 받고 나서였습니다. 서버에 접속해보니 디스크가 100%였고, MySQL이 binlog 파일을 쓰지 못해서 DB 트랜잭션이 실패하고 있었습니다. 미리 알람만 있었다면 새벽에 급하게 대응하지 않아도 됐을 것입니다.

현재 디스크 사용량 확인

# 전체 파티션 사용량
df -h

# 폴더별 사용량 (상위 10개)
du -sh /var/www/html/* | sort -rh | head -10

# 특정 폴더 상세 확인
du -sh /var/www/html/wp-content/uploads/
du -sh /var/log/nginx/
du -sh /var/lib/mysql/

용량을 많이 차지하는 상위 원인:

  • /wp-content/uploads/: 이미지, 파일 누적
  • /var/log/: 로그 파일 누적
  • /var/lib/mysql/: DB binlog 누적

알림 스크립트 작성

디스크 사용률이 80%를 넘으면 이메일로 알림을 보내는 스크립트입니다.

#!/bin/bash
# /usr/local/bin/disk-alert.sh

THRESHOLD=80
ADMIN_EMAIL="admin@병원사이트.com"

while IFS= read -r line; do
    usage=$(echo "$line" | awk '{print $5}' | tr -d '%')
    mount=$(echo "$line" | awk '{print $6}')
    
    if [ "$usage" -gt "$THRESHOLD" ]; then
        echo "⚠️ 디스크 경고: $mount 사용률 ${usage}%" | \
            mail -s "[서버경고] 디스크 $mount ${usage}% 사용 중" $ADMIN_EMAIL
    fi
done < <(df -h | grep -vE '^Filesystem|tmpfs|cdrom')
chmod +x /usr/local/bin/disk-alert.sh

cron 등록:

# 매일 오전 9시와 오후 6시에 확인
0 9,18 * * * /usr/local/bin/disk-alert.sh

로그 자동 정리 추가

디스크가 차는 주요 원인인 로그 파일을 주기적으로 정리합니다.

# 30일 이상 된 로그 삭제
find /var/log -name "*.log" -mtime +30 -delete
find /var/log/nginx -name "*.log.*.gz" -mtime +30 -delete

또는 logrotate를 활용해서 로그 파일 크기와 보관 기간을 제어하는 것이 더 체계적입니다.

디스크 모니터링은 반응형 대응(꽉 찬 후)에서 선제적 대응(꽉 차기 전)으로 전환하는 핵심입니다. 80% 알림과 95% 긴급 알림을 별도로 설정하면 대응 시간을 벌 수 있습니다.

편집 정책

AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.

작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)