はじめに

最近オフィスで仕事をしていると、たまに「異常にネットが遅い。。。」と感じるときがあります。
これは計測のしがいがありますね!!
Don’t guess! Measure!
というわけで、ネット回線のスピードテストを自動実行して視覚化してみました。


 

やったこと

  • speedtest-cliをcron実行
  • 結果を記録
  • 記録したデータをグラフにする

計測方法

本当はGoogleスピードテストをヘッドレスブラウザから叩くようにしたかったんですが、環境作るのに手間がかかりそうだったのでやめました。
今回利用したのは、speedtest-cliというCLIで実行できるツールです。
こちらはPython製ですが、Pythonのコードは一切書いていません。
ただ、Pythonの実行環境というかpipというパッケージ管理ツールが必要となります。
以前、Pythonの環境は整えていたので今回はスムーズに導入できました。
実行環境はCentOS6です。


speedtest-cliをインストール

pip install speedtest-cli

インストールが完了したらターミナルから

speedtest

と叩くだけで回線速度の計測ができます。
しかし、これだとpingから最適な計測サーバーを選択するらしく毎回違うサーバーにつながってしまいます。
同じサーバーにつなげて時間以外の条件を変えずに計測を行いたかったので、以下のオプションのようにして実行します。

speedtest --simple --server 14623

--simpleオプションは実行結果をシンプルに表示します。
--server 14623で東京サーバーを指定しています。
サーバーは世界中にあるのですが、日本のサーバーを利用したい場合は以下のようにすると一覧を表示できます。

speedtest --list|grep -i japan
14623) IPA CyberLab (Bunkyo, Japan) [2.57 km]
 6492) denpa893 (Sumida, Japan) [6.13 km]
15047) OPEN Project (via 20G SINET) (Tokyo, Japan) [6.15 km]
18838) BGP Network (Tokyo, Japan) [6.15 km]
20976) GLBB Japan (Tokyo, Japan) [6.15 km]
19256) Love4Taylor (Tokyo, Japan) [6.15 km]
 6508) at2wn (Yokohama, Japan) [28.67 km]
 8407) Allied Telesis Capital Corporation (Sagamihara, Japan) [36.44 km]
 6087) Allied Telesis Capital Corporation (Fussa-shi, Japan) [38.13 km]
 7139) SoftEther Corporation (Tsukuba, Japan) [48.03 km]
19038) poteitooo (Nagoya, Japan) [263.76 km]
 6766) JAIST(ino-lab) (Nomi, Japan) [300.32 km]
 6368) gatolabo (Maibara, Japan) [316.59 km]
 6476) rxy (individual) (Osaka, Japan) [401.52 km]
 6405) Allied Telesis Capital Corporation (Misawa, Japan) [573.40 km]
19915) CloudRemix(IDCF) (Kitakyushu, Japan) [834.67 km]
18709) extride inc (Hitoyoshi, Japan) [914.25 km]
  811) GLBB Japan KK (Chatan, Japan) [1543.58 km]
 6581) haza (Haebaru, Japan) [1556.20 km]
21118) GLBB Japan (Naha, Japan) [1557.98 km]

シンプル表示で実行すると以下のような結果が表示されます。

speedtest --simple --server 14623
Ping: 32.296 ms
Download: 79.92 Mbit/s
Upload: 92.78 Mbit/s

計測結果を記録してグラフにする



ここまでで、ネット回線の速度は計測ができました。
続いてこちらを記録してグラフにします。
ここから急にPHPになりますがご容赦ください。

<?php

$now = date('Y-m-d H:i:s');
$result = array();
exec("speedtest --simple --server 14623", $result);

if (!$result) {
    exit;
}

// あとはcsvファイルとして記録する
$csv = implode(",", $result);
$fileName = "speedtest.csv";
$fp = fopen($fileName, "a");
fwrite($fp, $csv . ',' . $now);
fwrite($fp, "\n");
fclose($fp);

シェルでやるのが面倒くさかったので、PHPからexecで叩いてcsvファイルに記録することにしました。
こちらのPHPをcronに登録して15分毎に計測していきます。
1日あればそこそこデータとれます。
データが貯まったらcsvファイルをスプレッドシートに投げてグラフを表示します。






※実データだとまずい気がしたので、グラフは一部加工しています。


まとめ

実際に計測してみると、やはり夕方から夜にかけてどんどん速度が落ちていることがわかりました。
感覚で遅くなったと言ってもなかなか改善に動いてくれる人は少ないですが、数字とかグラフで視覚化するとあっさり動いてくれたりします。
speedtest-cliはWindowsでもPythonをインストールすれば動きますので、ネット回線の速度を計測したい人は試してみると良いと思います。
それでは、快適なネットライフを。