서버 운영에서 현재 상태를 빠르게 파악하는 능력은 매우 중요합니다. 특히 장애 발생 시 원인을 신속하게 진단하려면 모니터링 도구를 능숙하게 사용할 줄 알아야 합니다.
CPU & 메모리: htop
top보다 훨씬 직관적인 대화형 프로세스 모니터입니다.
sudo apt install -y htop
htop
주요 단축키:
F6: 정렬 기준 변경 (CPU%, MEM% 등)F9: 프로세스 종료 (kill)F4: 프로세스 필터링t: 트리 보기
한 줄 CPU/메모리 요약:
# CPU 코어별 사용률
mpstat -P ALL 1
# 메모리 상태 (MB 단위)
free -m
# 상위 메모리 사용 프로세스
ps aux --sort=-%mem | head -10
# 상위 CPU 사용 프로세스
ps aux --sort=-%cpu | head -10
디스크: df, du, iostat
# 디스크 사용량 (사람이 읽기 쉬운 형태)
df -h
# 특정 디렉토리 크기
du -sh /var/log/*
# 큰 파일 찾기 (상위 10개)
du -ah / 2>/dev/null | sort -rh | head -10
# 디스크 I/O 실시간 모니터링
sudo apt install -y sysstat
iostat -x 1
iostat 결과에서 %util이 80% 이상이면 디스크 I/O 병목을 의심합니다.
네트워크: ss, iftop, nethogs
# 열린 포트 및 연결 상태 확인 (netstat 대체)
ss -tulnp
# 특정 포트 확인
ss -tulnp | grep :80
# 실시간 네트워크 대역폭 모니터링 (인터페이스별)
sudo apt install -y iftop
sudo iftop -i eth0
# 프로세스별 네트워크 사용량
sudo apt install -y nethogs
sudo nethogs eth0
로그: journalctl, tail
# 시스템 로그 실시간 확인
sudo journalctl -f
# 특정 서비스 로그
sudo journalctl -u nginx -f
# 마지막 부팅 이후 에러만
sudo journalctl -b -p err
# 특정 시간대 로그
sudo journalctl --since "2024-01-01 00:00" --until "2024-01-01 23:59"
# Nginx 접속 로그 실시간
sudo tail -f /var/log/nginx/access.log
# 특정 IP 접속만 필터
sudo tail -f /var/log/nginx/access.log | grep "1.2.3.4"
종합 모니터링: glances
하나의 화면에서 CPU, 메모리, 디스크, 네트워크를 모두 볼 수 있습니다:
sudo apt install -y glances
glances
웹 브라우저에서 접근하는 웹 서버 모드:
glances -w
# http://서버IP:61208 접속
빠른 진단 원라이너
# 서버 기본 정보 한 번에
echo "=== CPU ===" && lscpu | grep "Model name" && \
echo "=== Memory ===" && free -h && \
echo "=== Disk ===" && df -h / && \
echo "=== Load ===" && uptime
# 연결 수 많은 IP 상위 10개
ss -tn | awk 'NR>1{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10
# 현재 TIME_WAIT 연결 수
ss -tan | grep TIME-WAIT | wc -l
이 도구들을 익혀두면 장애 상황에서도 침착하게 원인을 찾을 수 있습니다.