인터넷 속도를 정기적으로 모니터링하는 것은 네트워크 문제를 진단하고 인터넷 서비스 제공업체(ISP)의 서비스 품질을 평가하는 데 매우 유용합니다. 이 글에서는 리눅스 시스템에서 3시간마다 자동으로 인터넷 속도를 측정하고 로그를 남기는 시스템을 구축하는 방법을 상세히 알아보겠습니다.
시스템 구성 요소
이 시스템은 다음과 같은 구성 요소로 이루어집니다:
- 속도 측정 도구: speedtest-cli 유틸리티
- 자동화 스크립트: 측정 결과를 로그 파일에 기록
- 정기 실행 설정: cron을 사용한 주기적 실행
- 로그 관리: 로그 로테이션으로 디스크 공간 관리
1. 속도 측정 도구 설치
먼저 인터넷 속도를 측정할 수 있는 speedtest-cli
도구를 설치합니다. 이 도구는 Speedtest.net의 서비스를 커맨드 라인에서 이용할 수 있게 해주는 파이썬 기반 도구입니다.
sudo apt update
sudo apt install -y speedtest-cli
Debian/Ubuntu 기반이 아닌 다른 배포판을 사용하는 경우, 해당 패키지 관리자를 사용하세요. 예를 들어 Fedora에서는:
sudo dnf install speedtest-cli
2. 속도 측정 스크립트 생성
이제 인터넷 속도를 측정하고 결과를 로그 파일에 기록하는 스크립트를 작성합니다.
sudo nano /usr/local/bin/speed_test.sh
스크립트에 다음 내용을 입력합니다:
#!/bin/bash
# 로그 파일 경로 설정
LOG_FILE="/var/log/speedtest.log"
# 현재 날짜 및 시간 가져오기
DATE=$(date "+%Y-%m-%d %H:%M:%S")
# 로그 파일에 시간 기록과 함께 측정 시작 표시
echo "=== 인터넷 속도 테스트: $DATE ===" >> $LOG_FILE
# speedtest-cli 실행하고 결과를 로그 파일에 기록
# --simple 옵션은 간단한 형식으로 결과 출력
speedtest-cli --simple >> $LOG_FILE
# 가독성을 위한 빈 줄 추가
echo "" >> $LOG_FILE
스크립트 파일에 실행 권한을 부여합니다:
sudo chmod +x /usr/local/bin/speed_test.sh
3. cron 작업 설정
이제 스크립트를 3시간마다 자동으로 실행하도록 cron 작업을 설정합니다. cron은 리눅스에서 작업을 주기적으로 실행하기 위한 시스템 유틸리티입니다.
sudo crontab -e
편집기가 열리면 다음 내용을 추가합니다:
0 */3 * * * /usr/local/bin/speed_test.sh
이 설정은 매일 00:00, 03:00, 06:00, 09:00, 12:00, 15:00, 18:00, 21:00에 스크립트를 실행합니다.
4. 로그 로테이션 설정
로그 파일이 무한정 커지는 것을 방지하기 위해 로그 로테이션을 설정합니다. 이는 특히 장기간 시스템을 운영할 때 디스크 공간을 효율적으로 관리하는 데 중요합니다.
sudo nano /etc/logrotate.d/speedtest
다음 내용을 입력합니다:
/var/log/speedtest.log {
weekly # 일주일마다 로테이션
rotate 4 # 최대 4개의 로그 파일 유지
compress # 오래된 로그 파일 압축
missingok # 로그 파일이 없어도 에러 발생하지 않음
notifempty # 빈 파일은 로테이션하지 않음
}
5. 시스템 테스트
설정이 완료되었으니 스크립트가 제대로 작동하는지 테스트해 봅시다:
sudo /usr/local/bin/speed_test.sh
그리고 로그 파일을 확인합니다:
cat /var/log/speedtest.log
다음과 비슷한 출력이 표시되어야 합니다:
=== 인터넷 속도 테스트: 2023-09-01 14:30:25 ===
Ping: 24.584 ms
Download: 95.32 Mbit/s
Upload: 10.54 Mbit/s
6. 로그 확인 및 분석
정기적으로 로그를 확인하여 인터넷 속도 패턴을 분석할 수 있습니다:
# 전체 로그 확인
cat /var/log/speedtest.log
# 실시간으로 로그 확인
tail -f /var/log/speedtest.log
# 다운로드 속도만 추출
grep "Download" /var/log/speedtest.log
# 특정 날짜의 로그만 확인
grep "2023-09-01" /var/log/speedtest.log
이 데이터를 사용하여 시간대별 속도 변화를 추적하고, ISP가 약속한 속도를 제공하는지 확인할 수 있습니다.
결론
이 글에서는 리눅스 시스템에서 3시간마다 인터넷 속도를 자동으로 측정하고 로그를 남기는 시스템을 구축하는 방법을 알아보았습니다. 이 시스템은 네트워크 성능 모니터링과 ISP 서비스 품질 검증에 매우 유용합니다.
스크립트를 필요에 맞게 수정하고, 더 정교한 분석 도구를 추가하여 사용 사례에 맞게 확장할 수 있습니다. 리눅스의 강력한 자동화 기능을 활용하면 이와 같은 유용한 모니터링 시스템을 손쉽게 구축할 수 있습니다.
'Linux' 카테고리의 다른 글
PM2로 Node.js 애플리케이션 관리하기 (0) | 2025.02.18 |
---|---|
nohup : 백그라운드 프로세스 실행 (0) | 2025.02.03 |
Sudoers : 권한 관리 (1) | 2025.02.02 |