家のインターネットの回線速度を speedtest-cli で観測する
はじめに
集合住宅のインターネットは利用者が少ない昼間は比較的すいていて、夜間は混雑していることが多いらしい。
インターネットが遅いなと感じたときにみんながよく使っている speedtest のコマンドラインツール版があると知り、定期実行して観測してみました。
speedtest-cli のインストール
LinuxでもSpeedtestがしたい(speedtest-cli) を参考にさせてもらいながら、家の mac にインストールしました。git clone
して該当する実行ファイルがspeedtest.py
が実行できればよさそうなので以下のようにしました。試しに実行した結果も少しマスクして載せておきます。
1 | ) # git clone https://github.com/sivel/speedtest-cli |
その他の要件としては、
・インターネット速度の定点観測という趣旨なので、テスト用サーバは固定する(今回は IPA さん 14263
にしてみた)
・可視化しやすいように CSV エクスポートする
ということで、実行コマンドは以下./speedtest.py --server 14623 --csv >> result.csv
CSV エクスポートした場合は以下のような出力となる
1 | 14623,IPA CyberLab,Bunkyo,2019-08-11T10:58:53.465639Z,10.824939774573073,5.235,216961778.00509918,167021284.0664986,,x.x.x.x |
そのため、./speedtest.py
の結果と見比べて、あらかじめ一行目にラベルを入れておきます。名前は適当です。最後から二番目の値が欠けているのも謎です。
1 | id,test_server,city,date,distance,rtt,download,upload,,ip |
定期実行の設定
30分に一回取得する cron の設定をします。実行は絶対パスで記載する点に注意します。
1 | crontab -l |
splunk (docker) の準備
CSV をかんたんに時系列データとして可視化する方法として、今回は splunk を利用します。使い捨てのプロセスの感覚で、Docker 上で立てます。
ローカルディレクトリを Docker コンテナから参照させたいため、以下の記事を参考にコンテナを起動します。
【Docker】Dockerでホストのディレクトリをマウントする
1 | docker run -p 8000:8000 -e "SPLUNK_START_ARGS=--accept-license" -e "SPLUNK_PASSWORD=hogehoge" -v ~/speedtest-cli:/opt/splunk/etc splunk/splunk |
起動後は http://localhost:8000
にアクセスして、データ参照設定をします。
Settings > DATA > Data inputs
Local inputs > File & Directories > Add new
ここで Browse から先程マウントしたディレクトリを参照して、result.csv
を選択します。その他の設定はそのままでどんどん進んでいけば大丈夫です。
結果の可視化
時系列に表示するため timechart
関数を使います。
1 | host=e02bb3812356 | eval download_mb=download/1000000 | timechart avg(download_mb) |
CSV の場合ダウンロードとアップロードの速度が生の数字 (Bit/sec) で表示されるため、わかりやすくメガ (MBit/sec) に変換するため、eval
関数で1000000で割っています。たまたま hostname で引っ掛けてますが他のインプットデータがないので「*」とかでもよいです。
集合住宅タイプの光フレッツなので夜はなんとなく遅いなと感じていたが、夜間と昼間でそこまで差がなかったのが意外。
(2019/08/15追記)
7日間の傾向を span=30min
で見てみたら、特に下りは時間帯で傾向がありそう。PM7:00~AM2:30あたりで急速に下り速度が落ちることがわかる。
にしても初日だけ500を超えていて、その後最大速度が下り250MB、上り200MBで頭打ちになっているように見える。詐欺・・・