먼저 설정 파일을 생성해야 합니다:
# 설정 템플릿을 복사
cp config.sh.example config.sh
생성된 config.sh
파일을 열어서 다음 설정값들을 실제 환경에 맞게 수정해야 합니다:
# 서버 정보 설정
SERVER_NAME="web-server-01" # 서버 식별명
SERVER_IP="210.94.179.180" # 서버 IP 주소
INTERFACE="eno1" # 모니터링할 네트워크 인터페이스
# Google Apps Script URL
APPS_SCRIPT_URL="https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec" # Apps Script URL
주의:
config.sh
파일은 민감한 정보를 포함하므로 Git에 커밋되지 않습니다.
사용 가능한 네트워크 인터페이스를 확인하려면:
# 방법 1: ip 명령어 사용
ip link show
# 방법 2: vnstat으로 확인
vnstat --iflist
# 방법 3: ifconfig 사용 (구 버전)
ifconfig
일반적인 인터페이스 이름:
- 유선:
eth0
,eno1
,enp3s0
- 무선:
wlan0
,wlp12s0
,wlo1
실행 권한을 부여합니다:
chmod +x run_traffic_monitor.sh
Cron Job 설정 전에 스크립트가 정상 동작하는지 확인:
./run_traffic_monitor.sh
로그 확인:
tail -f logs/traffic_monitor.log
crontab -e
# 10분마다 트래픽 모니터링 실행
*/10 * * * * /path/to/run_traffic_monitor.sh
# 5분마다 트래픽 모니터링 실행
*/5 * * * * /path/to/run_traffic_monitor.sh
시스템 로그와 별도로 Cron 실행 로그를 관리하려면:
# 10분마다 실행하고 Cron 로그 별도 저장
*/10 * * * * /path/to/run_traffic_monitor.sh >> /path/to/logs/cron.log 2>&1
실제 경로를 포함한 완전한 예시:
# 매 10분마다 네트워크 트래픽 모니터링 실행
*/10 * * * * /home/admin/scripts/run_traffic_monitor.sh >> /home/admin/scripts/logs/cron.log 2>&1
crontab -l
# Ubuntu/Debian
sudo systemctl status cron
# CentOS/RHEL
sudo systemctl status crond
# 시스템 Cron 로그
sudo tail -f /var/log/cron
# 또는 syslog에서 cron 관련 로그
sudo grep CRON /var/log/syslog
# 메인 로그 확인
tail -f logs/traffic_monitor.log
# Cron 실행 로그 확인
tail -f logs/cron.log
- 메인 로그:
logs/traffic_monitor.log
- Cron 로그:
logs/cron.log
- 백업 로그:
logs/traffic_monitor.log.backup.YYYYMMDD
-
절대 경로 사용 확인:
# 잘못된 예 */10 * * * * ./run_traffic_monitor.sh # 올바른 예 */10 * * * * /home/user/scripts/run_traffic_monitor.sh
-
실행 권한 확인:
ls -la /path/to/run_traffic_monitor.sh # -rwxr-xr-x 권한이 있어야 함
-
환경 변수 문제: Cron 환경에서는 PATH가 제한적이므로, 스크립트 내에서 절대 경로 사용
# 최근 에러 로그 확인
grep "ERROR" logs/traffic_monitor.log
# Python 관련 오류 확인
grep "python3" logs/cron.log
문제 진단을 위해 디버그 모드로 한 번 실행:
# 스크립트 내 Python 실행 부분에 --debug 옵션 임시 추가
python3 "$PYTHON_SCRIPT" \
--server-name "$SERVER_NAME" \
--server-ip "$SERVER_IP" \
--interface "$INTERFACE" \
--apps-script-url "$APPS_SCRIPT_URL" \
--debug \
>> "$LOG_FILE" 2>&1
Cron Job 설정 후 다음을 확인하여 정상 동작 여부를 검증:
- Health Check 메시지: 스크립트 로그에서 "Health check sent successfully" 메시지 확인
- Slack 알림: Apps Script를 통해 Slack 채널에 알림이 오는지 확인
- 파일 생성:
traffic_history.json
파일이 생성되고 업데이트되는지 확인
# 최근 실행 로그 확인
tail -20 logs/traffic_monitor.log
# Health check 성공 로그 확인
grep "Health check sent successfully" logs/traffic_monitor.log
# 히스토리 파일 확인
ls -la /path/to/traffic-monitor/traffic_history.json
정상 동작 시 Health Check는 설정된 주기마다 성공적으로 전송되며, 이상치 감지 시에만 Slack으로 스파이크 알림이 전송됩니다.