動機
最近賃貸に無料の回線(UCOM光)が導入された。部屋のLANコネクタに接続すればそのまま使えるようになっている。 今まではSoftbank光を個人契約して使ってきた。毎月4000円ほどお布施しているので負担が結構大きい。 UCOM光に乗り換えた後にトラブルが発生するのは避けたいので、回線速度・安定性・セキュリティ等問題ないか検討しておきたい。 今回は回線速度に注目して調査する。
ツール調査
fastやspeedtestなどの回線速度計測サービスがある。 Webサービスでは周期的なデータ収集も難しいので、スクリプトで提供されているものを使いたいところ。 speedtestはgithubで公開されており、簡単にインストールして使うことができる。
はじめはspeedtestを周期的に実行するスクリプトを作ろうと思ったが、既にありそうなので調べるとSpeedtest Trackerなるものが出てきた
Speedtest Tracker
Speedtest Trackerのデモサイト(https://speedtest.henrywhitaker.com/)がある。これをローカルで使えるようにする。
WebUIで見た目もよく、定期的にspeedtestを実行、結果をダウンロードできる。 しかもdockerイメージも公開されていて簡単に導入できる。
インストール
Speedtest Trackerの公式(https://github.com/henrywhitaker3/Speedtest-Tracker)にある通りに進める。
余っているラズパイがあったので、ubuntu20.04をインストールして環境構築した。 dockerは公式の手順(https://docs.docker.com/engine/install/)通りにインストール。
Speedtest Trackerのdockerイメージをpullする。ラズパイなのでarm版となる。
docker pull henrywhitaker3/speedtest-tracker:latest-arm
コンテナ作成。
docker create \
--name=speedtest \
-p 8765:80 \
-v /path/to/data:/config \
-e OOKLA_EULA_GDPR=true \
--restart unless-stopped \
henrywhitaker3/speedtest-tracker:latest-arm
コンテナ起動。
docker container ls -a #CONTAINER IDを確認
docker container start <CONTAINER ID>
localhost:8765にアクセスするとSpeedtest Trackerが起動していることがわかる。
設定と計測
Settings
ページでSchedule
とServer
を設定する。
-
Schedule
: CRON表記で指定。- 15分間隔で計測するよう設定。
-
Server
: 回線速度を計測する対象サーバーIDを指定。指定なければランダムに指定される。speedtest-cli --list
で一覧を確認できる。- 今回はOPEN Project (via 20G SINET)の15047で固定。
設定した後、Start your first test
で周期的な計測が開始される。
大体一日まわすと以下のような結果を得られる。
All Tests
ページでは結果の詳細を確認できる。
Settings
ページのBackup/Restore
ではcsvまたはjsonでダウンロード可能。
まとめ
SpeedTest Trackerを使ってデータ収集することができた。 csvをダウンロードできるのが便利でスプレッドシートで簡単に比較できる。 今後は2つの回線のデータを収集して比較していきたい。