본문 바로가기
Server/Software

[Docker Image] Speedtest Tracker - 인터넷 속도 측정

by 루디두리 2021. 5. 24.
반응형

개요

소개할 Speedtest Tracker는 Web GUI를 통해서 제공되며 서버를 설치한 장소(집, 클라우드)의 인터넷 속도 측정, 최근에 속도 측정한 기록을 그래프로 보거나 그동안 속도 측정했었던 기록을 볼 수 있는 기능이 제공된다.

그 외 지정한 시간마다 자동으로 속도 측정, 텔레그램을 통한 속도 측정 알림 전송, 그 외 기타 기능이 지원된다.

 

원래 Speedtest Tracker는 KT가 임의로 인터넷 속도를 제한한 사건이 발생하기 전에 찾았지만 사건으로 인해 파장이 일어나서 이제야 정보공유 겸 글을 기록한다.

 

Linux 환경에서는 Docker와 Docker Compose가 설치되어 있어야 하고

Synology DSM 환경에서는 Docker 패키지가 설치되어 있어야 한다.


설치 및 실행 (docker-compose)

docker-compose.yml 예제 파일이다.

version: '3'

services:
  speedtest:
    # 2021년 4월 기준으로 latest 태그는 버그가 있는 건지 시간대를 올바르게 지정했는데도 지정한 시간마다 속도 측정이 되지 않는다.
    # dev 태그에서는 문제가 해결되었는지 정상적으로 작동하니 dev로 지정한다.
    image: henrywhitaker3/speedtest-tracker:dev
    container_name: speedtest
    ports:
      - (원하는 포트):80
    volumes:
      - (설정 파일 디렉토리):/config
    environment:
      # ===== [필수]
      # == 약관 동의 항목. "true"로 하지 않을 경우 속도 측정이 불가능하다.
      - OOKLA_EULA_GDPR=true
      # ===== [아래 항목부터는 선택 사항. 지정할 경우 각 항목의 주석(#)을 제거하면 된다.]
      # == 시간대. 다른 시간대는 다음 링크 참조: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      #- TZ=Asia/Seoul
      # == 볼륨 권한. 특정 사용자나 그룹의 ID를 지정할 수 있다.
      #- PUID=볼륨 사용자 ID...
      #- PGID=볼륨 그룹 ID...
      # == 접속 시 로그인 여부. "true"로 지정할 경우 로그아웃 상태에서는 그래프와 측정 기록만 볼 수 있다.
      #- AUTH=true
    logging:
      # 로그 관련 설정.
      driver: json-file
      options:
        max-file: "10"
        max-size: "200k"

 

다음 예제처럼 작성하고 저장하면 된다.

version: '3'

services:
  speedtest:
    image: henrywhitaker3/speedtest-tracker:dev
    container_name: speedtest
    ports:
      - 8765:80
    volumes:
      - ./config:/config
    environment:
      - OOKLA_EULA_GDPR=true
      - TZ=Asia/Seoul
      - AUTH=true
    logging:
      driver: json-file
      options:
        max-file: "10"
        max-size: "200k"

 

저장까지 했으면 다음 명령어로 (다운로드 및) 실행하면 된다.

docker-compose up -d

설치 및 실행 (Synology)

DSM에 진입해서 Docker를 실행한다.

 

DSM Docker 이미지

이미지 > 상단에 있는 추가 > URL에서 추가를 선택한다.

 

이미지 추가

URL에 다음 주소를 붙여 넣고 추가를 누른다.

https://hub.docker.com/r/henrywhitaker3/speedtest-tracker

 

이미지 태그 선택

latest로 지정하고 선택을 누르면 이미지를 다운로드한다.

2021년 4월 기준으로 latest 태그는 버그가 있는 건지 시간대를 올바르게 지정했는데도 지정한 시간마다 속도 측정이 되지 않는다. dev 태그에서는 문제가 해결되었는지 정상적으로 작동하니 dev로 지정한다.

dev로 지정할 경우 새로운 기능을 빠르게 볼 수 있으나 버그가 있을 수 있다.

 

다운로드가 완료된 이미지

다운로드가 완료될 때까지 기다린 다음 다운로드한 이미지를 선택하고 상단에 있는 실행을 누른다.

 

컨테이너 일반 설정

컨테이너 이름은 그대로 두거나 원하는 이름으로 변경한 뒤 고급 설정을 누른다.

 

볼륨 경로 지정

폴더 추가를 눌러서 설정 파일이 저장되는 폴더를 원하는 폴더에 지정한 다음 마운트 경로는 다음 폴더를 입력해야 한다.

/config

 

포트 번호 설정

컨테이너 443 포트는 암호화되는 HTTPS 연결이고 80 포트는 일반 HTTP 연결이다.

컨테이너 포트는 그대로 두고 로컬 포트만 원하는 포트 번호로 변경한다.

 

환경 변수 설정

변수를 추가할 때는 + 버튼을 누르면 되고 위 사진처럼 변수를 설정하면 된다. 아래 표를 참고해서 변수를 지정한다.

변수 설명
OOKLA_EULA_GDPR [필수] 약관 동의 항목. "true"로 하지 않을 경우 속도 측정이 불가능하다.
TZ [선택] 시간대. 한국이라면 Asia/Seoul 을 입력한다. 다른 시간대는 다음 링크 참조:
en.wikipedia.org/wiki/List_of_tz_database_time_zones
PUID [선택] 볼륨 권한. 특정 사용자 ID를 지정할 수 있다.
PGID [선택] 볼륨 권한. 특정 그룹의 ID를 지정할 수 있다.
AUTH [선택] 설정 수정 시 인증 여부. "true"로 지정할 경우 로그아웃 상태에서는 그래프와 측정 기록만 볼 수 있다.

모든 설정이 완료되었다면 적용, 다음을 누른다.

 

컨테이너 설정 확인

설정값을 확인한 후 적용을 눌러 컨테이너를 생성한다.


컨테이너 생성 및 실행한 뒤 오류가 발생할 경우

speedtest 바이너리가 존재하지 않을 때의 문제 해결

오류 메시지

위와 같이 오류 알림이 나올 경우 해당 컨테이너를 선택한 후 세부 사항에서 로그를 눌러 들어간다.

 

오류가 발생한 로그

다음처럼 파일이 없다면서 종료되는데 speedtest 바이너리를 다운로드하지 못해서 발생하는 오류이다.

 

이럴 경우에는 해당 바이너리를 직접 다운로드하고 넣어야 한다.. 다음 링크를 눌러 접속한다.

Speedtest CLI - Internet connection measurement for developers

 

Speedtest CLI - Internet connection measurement for developers

Speedtest® CLI Internet connection measurement for developers Speedtest CLI brings the trusted technology and global server network behind Speedtest to the command line. Built for software developers, system administrators and computer enthusiasts alike,

www.speedtest.net

 

Speedtest CLI 다운로드

아래로 스크롤하면 다음과 같은 화면이 나오는데 여기에서 Download for Linux를 누른 후 프로세서에 맞는 바이너리를 다운로드한다.

일반적인 시놀로지 NAS일 경우에는 x86_64를 다운로드하면 된다.

 

생성된 파일로 채워져 있는 폴더 / 비어있는 폴더

먼저 선택했었던 폴더에 들어가서 생성된 폴더와 파일을 모두 삭제한다.

 

직접 만든 폴더와 업로드한 파일

위 사진과 같이 폴더를 만들고 만든 폴더에 들어가서 폴더를 만드는 과정을 반복하면 된다.

대소문자 및 띄어쓰기를 조심하면서 정확하게 입력해야 한다.

www/app/Bin

그런 다음 다운로드한 압축 파일을 열고 speedtest 파일을 방금 만든 폴더에 넣는다.

 

DSM Docker 컨테이너

Docker로 돌아가서 스위치를 눌러 컨테이너를 구동한다.

 

로그

위 사진과 같이 로그가 출력되면 정상적으로 실행된 것이다.


로그인 및 홈 화면 살펴보기

브라우저에서 주소와 포트를 입력해서 접속한다.

http://[IP 주소]:[포트 번호]

 

로그인하지 않은 홈 화면

환경 변수에서 로그인을 설정했을 경우 다음 정보를 이용해서 로그인한다.

초기 설정 시 아이디 / 비밀번호
admin@admin.com password

 

홈 화면

Start your first test! 버튼 또는 Test again 버튼을 눌러 속도 측정을 할 수 있고

속도 측정은 대략 1분가량의 시간이 소모된다.

 

결과를 홈 화면 그래프로 띄워주기도 하고 스크롤을 내리면 최근 며칠을 지정해서 그래프를 볼 수도 있다.

All Tests를 눌러 측정했던 결과를 모두 볼 수 있다.


지정한 시간마다 속도 측정

설정 화면 - General

설정 > General > Schedule 부분에 지정되어있는 시간에 따라서 속도 측정을 할 수 있고 기본 설정은 매 시간 0분마다 속도 측정이 이루어진다.

 

다음 링크에 접속한 다음 스크롤을 내려서 규칙 예시를 참고하면 되고 입력할 때 명령어 부분은 입력하면 안 된다.

2021.05.06 - Crontab 설치, 사용 방법

 

Crontab 설치, 사용 방법

개요 Cron은 예약한 시간 또는 특정 날짜에 명령어를 실행하는 스케줄러이다. 간단히 설명하자면 Windows 관리 도구로 제공되는 작업 스케줄러와 비슷한 역할이라고 생각하면 된다. 설치 해당 운영

rudi2e.tistory.com


지정한 서버를 통해서만 속도 측정

설정 > General > Server 부분에 지정한 서버를 통해서만 측정한다.

여러 개로 지정할 수 있고 여러 개가 지정되어있을 경우 무작위로 선택한다.

 

다음 링크를 눌러 Speedtest.net에 접속한다.

Speedtest by Ookla - The Global Broadband Speed Test

 

Speedtest by Ookla - The Global Broadband Speed Test

Test your Internet connection bandwidth to locations around the world with this interactive broadband speed test from Ookla

www.speedtest.net

 

Speedtest.net

원하는 속도 측정 서버로 변경한 다음 서버 이름을 마우스로 가리키고 왼쪽 하단에 표시되는 주소를 보거나 링크를 복사하면 다음과 같은 주소로 되어 있을 것이다.

https://www.speedtest.net/api/js/perform-redirect?server_id=6527

주소 끝에 server_id=6527로 되어있는데 숫자로 된 서버 ID를 기억해두면 된다.

다른 서버도 지정하고 싶으면 같은 방법으로 ID를 얻으면 된다.

 

만약 서버 ID가 표시되지 않는 경우 다음 링크에서 서버 이름을 검색하고 서버 ID를 찾으면 된다.

Speedtest Server List (williamyaps.github.io)

 

Speedtest Server List

 

williamyaps.github.io

Speedtest.net에 출력되는 서버만 지정할 수 있다.
사이트에 출력되지 않는 서버나 잘못된 서버 ID를 입력하고 속도 측정을 하면 X가 뜨면서 측정 오류가 발생한다.

 

서버 ID를 입력하고 저장한다. 만약 여러 개로 지정할 경우 쉼표로 구분해서 입력하면 된다.

예로 들어 속도 측정 서버를 OneProvider (Seoul), kdatacenter.com (Seoul)로 지정하려면 다음과 같이 쉼표를 붙여 구분하면 된다.

5249,6527

알림

텔레그램을 이용해서 속도 측정 결과를 알림을 받거나 특정 조건일 때 알림을 받을 수 있다.

 

설정 화면 - Notifications

텔레그램 봇 Token과 Chat ID를 입력하고 저장한 뒤 Test notifications를 눌러 알림이 제대로 오는지 확인한다.

2021년 4월 기준으로 dev 태그일 경우 Test notifications 버튼이 작동하지 않는 버그가 있는 것으로 보이나 속도 측정 시 문제없이 메시지를 받을 수 있었다.

 

그 외 아래와 같은 알림 전송 설정을 할 수 있다.

속도 측정 완료 후 측정 결과 알림
매일 지정한 시간에 하루 평균 속도 측정 결과 개요 알림
속도 측정 시 지정한 퍼센트보다 낮을 경우 경고 알림
속도나 핑이 지정한 값보다 낮을 경우 경고 알림

 

봇 Token과 Chat ID를 얻는 방법은 다음 링크를 참고하면 된다.

2021.05.11 - [Telegram] 봇 생성 및 Chat ID 찾기

 

[Telegram] 봇 생성 및 Chat ID 찾기

봇 생성 텔레그램을 실행한다. 텔레그램에서 검색을 통해 BotFather를 검색하고 입장한 뒤 시작을 누른다. /newbot을 누른 다음 봇이 사용할 이름과 아이디를 입력해서 API Token 값이 뜨면 정상적으로

rudi2e.tistory.com


비밀번호 변경

환경 변수로 로그인 설정을 했을 경우 비밀번호를 변경할 수 있다.

 

비밀번호 변경

설정 > Authentication > Change password를 눌러 로그인 비밀번호를 변경할 수 있다.

 

반응형

'Server > Software' 카테고리의 다른 글

Crontab 설치, 사용 방법  (0) 2021.05.06
Linux 토렌트 서버 transmission-daemon - 설치 및 설정  (0) 2020.03.23

댓글