서버 운영에서 현재 상태를 빠르게 파악하는 능력은 매우 중요합니다. 특히 장애 발생 시 원인을 신속하게 진단하려면 모니터링 도구를 능숙하게 사용할 줄 알아야 합니다.

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

이 도구들을 익혀두면 장애 상황에서도 침착하게 원인을 찾을 수 있습니다.