일본 서버에서 서비스를 운영할 때 모니터링은 장애를 사전에 예방하고, 문제 발생 시 빠르게 대응하기 위한 핵심 도구입니다. 이 글에서는 일본 서버 모니터링을 위한 CLI 도구부터 웹 기반 모니터링 솔루션, 외부 업타임 모니터링까지 단계별로 안내합니다.
모니터링이 필요한 이유
- CPU 과부하 사전 감지: 서버 다운 전에 알림 수신
- 메모리 부족 대응: OOM(Out of Memory) 킬러 발동 전 조치
- 디스크 용량 관리: 디스크 풀로 인한 서비스 중단 방지
- 서비스 다운 감지: 웹서버, DB 장애를 즉시 알림
1. 기본 CLI 모니터링 도구
htop — CPU·메모리 실시간 확인
apt install htop -y
htop
- F2: 설정 (CPU 표시 방식 등)
- F3: 프로세스 검색
- F9: 프로세스 종료 신호 전송
iostat — 디스크 I/O 모니터링
apt install sysstat -y
iostat -x 1 # 1초마다 갱신
%util항목이 90% 이상이면 디스크 I/O 병목
nethogs — 프로세스별 네트워크 사용량
apt install nethogs -y
nethogs eth0
특정 프로세스가 비정상적으로 많은 네트워크 대역폭을 사용하는지 확인할 수 있습니다.
ss — 네트워크 연결 상태
# ESTABLISHED 연결 수 확인
ss -s
# 특정 포트 연결 확인
ss -tnp | grep :80
ss -tnp | grep :3306
2. Netdata — 실시간 웹 기반 모니터링
Netdata는 설치가 간단하고 실시간으로 CPU, 메모리, 디스크, 네트워크, Nginx, MySQL 등 다양한 메트릭을 시각화합니다.
# 설치
wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh
sh /tmp/netdata-kickstart.sh --non-interactive
설치 후 http://서버IP:19999에서 실시간 대시보드 확인이 가능합니다.
외부 접근 시 보안 설정
Netdata 포트는 외부에 노출되지 않도록 로컬 바인딩 후 Nginx로 프록시하거나, IP 제한을 설정하세요:
# UFW로 19999 포트 접근 제한
ufw allow from 내IP주소 to any port 19999
3. 알림 설정 — 문제 발생 시 즉시 통보
간단한 서버 상태 확인 스크립트
#!/bin/bash
# /usr/local/bin/check-server.sh
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
MEM=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
DISK=$(df -h / | awk 'NR==2 {print $5}' | cut -d'%' -f1)
# 임계값 초과 시 알림 (텔레그램 봇 예시)
THRESHOLD_CPU=80
THRESHOLD_MEM=85
THRESHOLD_DISK=90
if [ "$CPU" -gt "$THRESHOLD_CPU" ]; then
echo "경고: CPU 사용률 ${CPU}% 초과" | mail -s "서버 경고" admin@example.com
fi
웹 서비스 업타임 확인
#!/bin/bash
# 웹 서비스 응답 확인
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://yourdomain.com)
if [ "$HTTP_CODE" != "200" ]; then
echo "사이트 다운! HTTP 코드: $HTTP_CODE" | mail -s "장애 알림" admin@example.com
fi
crontab에 등록:
*/5 * * * * /usr/local/bin/check-server.sh
*/5 * * * * /usr/local/bin/check-uptime.sh
4. 외부 업타임 모니터링 서비스
서버 자체의 모니터링 스크립트는 서버가 다운되면 알림을 보낼 수 없습니다. 외부 모니터링 서비스를 병행하세요.
추천 무료 서비스:
- UptimeRobot: 5분 간격으로 서비스 상태 확인, 이메일/텔레그램 알림
- Freshping: 1분 간격 모니터링, 여러 위치에서 확인
- HetrixTools: IP·도메인 블랙리스트 모니터링 포함
UptimeRobot 설정 방법
- uptimerobot.com 가입
- Add New Monitor → HTTP(s) 선택
- URL 입력 및 알림 설정 (텔레그램 또는 이메일)
- 5분 간격 자동 확인 시작
5. 로그 분석으로 문제 패턴 파악
# 최근 Nginx 에러 로그 확인
tail -100 /var/log/nginx/error.log
# 가장 많이 접속한 IP TOP 10
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 500 에러 발생 URL
awk '$9 == "500" {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# 오늘의 접속 수
grep "$(date '+%d/%b/%Y')" /var/log/nginx/access.log | wc -l
서버 상태 한눈에 보기
# 시스템 요약 정보
echo "=== CPU ===" && top -bn1 | grep "Cpu(s)"
echo "=== Memory ===" && free -h
echo "=== Disk ===" && df -h /
echo "=== Load ===" && uptime
echo "=== Services ===" && systemctl is-active nginx mariadb
마치며
일본 서버를 24시간 안정적으로 운영하려면 모니터링은 필수입니다. Netdata로 실시간 상태를 확인하고, UptimeRobot으로 외부에서 업타임을 감시하면 대부분의 장애를 사전에 대응할 수 있습니다. 서버 모니터링 설정에 대한 문의는 텔레그램 @tcp80net으로 주세요.