리눅스에서 3시간마다 인터넷 속도 자동 측정 시스템 구축하기

2025. 3. 20. 01:00·Linux
반응형

인터넷 속도를 정기적으로 모니터링하는 것은 네트워크 문제를 진단하고 인터넷 서비스 제공업체(ISP)의 서비스 품질을 평가하는 데 매우 유용합니다. 이 글에서는 리눅스 시스템에서 3시간마다 자동으로 인터넷 속도를 측정하고 로그를 남기는 시스템을 구축하는 방법을 상세히 알아보겠습니다.

시스템 구성 요소

이 시스템은 다음과 같은 구성 요소로 이루어집니다:

  1. 속도 측정 도구: speedtest-cli 유틸리티
  2. 자동화 스크립트: 측정 결과를 로그 파일에 기록
  3. 정기 실행 설정: cron을 사용한 주기적 실행
  4. 로그 관리: 로그 로테이션으로 디스크 공간 관리

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 : 백그라운드 프로세스 실행  (1) 2025.02.03
Sudoers : 권한 관리  (2) 2025.02.02
'Linux' 카테고리의 다른 글
  • PM2로 Node.js 애플리케이션 관리하기
  • nohup : 백그라운드 프로세스 실행
  • Sudoers : 권한 관리
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    리뷰관리
    카페24리뷰이관
    카페24리뷰
    긴유통기한우유
    learntocode
    상품 리뷰 크롤링
    cv2
    codingcommunity
    쇼핑몰리뷰
    list
    리뷰이관
    unity
    라떼우유
    셀레니움
    rtsp
    파이썬
    programming101
    스크립트 실행 순서
    ipcamera
    codingtips
    유니티
    devlife
    스크립트 실행
    스마트스토어리뷰
    믈레코비타멸균우유
    programmerlife
    리스트
    C#
    appdevelopment
    Python
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
리눅스에서 3시간마다 인터넷 속도 자동 측정 시스템 구축하기
상단으로

티스토리툴바