【Speedtest CLI】自宅回線の速度を定期的に測定し、簡単にグラフ化する

1 はじめに

回線速度」というものは、
時間帯やご近所さんの利用状況などの様々な要因で変化するものなので、
1回だけ測ったところでは大した意味は持ちません。

回線速度の測定と言えば、おなじみのサービスとして思いつくサイトがいくつかあるかと思います。
そういったサービスのほとんどはブラウザやスマホアプリで測定をするものです。
継続的な測定をするにあたって、毎度ブラウザやアプリを立ち上げているのでは面倒この上ありません。

そんななか、
Ooklaが 提供するコマンドラインで実行可能な”Speedtest CLI” というアプリケーションを利用すれば、
LinuxであればcronWindowsであればタスクスケジューラで、
定期的に自動で測定データを収集することができるようになります。

測定データをグラフ化するには、Excelを利用するのが定番な方法なのかもしれません。
Excelなどを使わずとも、図1-1に示すように簡単にグラフ化できる下のサービスを見つけましたので、
本記事で使い方を紹介したいと思います。

IIJMachinist

2 コマンドラインで実行可能なスピードテストアプリケーション

OoklaSpeedtest CLIは、
コマンドラインで使用できるネットワーク接続測定アプリケーションです。

これを利用することにより、自動化されたスクリプトをセットアップして、
経時的な傾向を含む接続パフォーマンスデータが収集できるようになります。

2.1 Speedtest CLIの入手とインストール

Speedtest CLIは、下に示すサイトから入手することができます。

https://www.speedtest.net/ja/apps/cli

LinuxWindowsmacOSなどへのインストール方法についても、
同ページに記載されています。
どのOSであっても、インストールはわずか2~3ステップですので、本記事には記載しません。

2.2 Speedtest CLIの使い方

基本的には、図2.2-1に示すように”speedtest”と叩くだけです。
測定結果の出力は、標準出力となります

なお、初回実行時には下に示すように、
End User License Agreement」の同意が求められますので、
YES」と同意する必要があります。 

2.3 Speedtest CLIのコマンド・オプション

Speedtest CLIには いくつかのコマンド・オプションがありますが、
どこにも説明書きが無いようですので、”speedtest -h”で確認するしかありません。

バージョンによって少々異なるようですが、
2023年1月最新の”Ookla 1.2.0.84 (ea6b6773cf) Linux/x86_64-linux-musl”では、
図2.3-1に示すようになっています。

よく使われると思われるオプションを表2.3-1に整理しました。

3 Machinist

3.1 Machinist概要

Speedtest CLIにより定期的にスピードテストを実行した結果は、
下に示すURLのIIJ /  Machinistというサービスを利用すれば、
簡単にグラフ化することができます。

https://machinist.iij.jp

Machinistは、 アップロードされた回線速度測定データを基にグラフを作成します。
測定項目が10まで、データの保存が直近1カ月であれば、無料で利用することができます。

本記事では、回線速度測定データのフラフ化の方法だけに止めます。

Machinistの その他の使い方や詳しい使い方については、本記事では説明は行いません。
詳しい利用方法については、次のページをご覧ください。

Machinistを使い始める

3.2 Machinistアカウントの新規登録とAPIキーの作成

Machinistに回線速度測定データをアップロードし、グラフを作成するには、
MachinistのアカウントAPIキーが必要です。

3.2.1 Machinistアカウントの新規登録

下に示すURLのMachinistの トップページ右上にある「ログイン」をクリックします。

https://machinist.iij.jp/

図3.2-1に示す画面に切り替わりますので、
下に示す2つを入力して、「新規登録」をクリックします。

・メールアドレス
・パスワード

Machinist新規アカウントの登録は、以上です。

3.2.2 APIキーの作成

APIキーは、ユーザーを認証するためのものです。

ダッシュボード・ページ右上アカウント右横にある「」をクリックすると、
メニューが表示されます。
アカウント設定」を選択すると、図3.2-2の画面が開きます。

APIキー」フィールドの「新規生成」をクリックすることで、
APIキーを作成することができます。

名前」は、測定データをアップロードする際には使用しません。
APIキーの「名前」は人間が識別するものですので、ご自分がわかり易いものを適当に付けてください。

3.3 測定データのHTTP POST

測定データは、JSON形式で、次のURLにPOSTします。

https://gw.machinist.iij.jp/endpoint

3.3.1 送信するリクエストのフォーマット

本項では、送信するリクエストのheaderbodyの内容について示します。

(1)リクエストheader

headerの構成は、下に示すようになります。

(2)リクエストbody

Machinistで収集する値はmetric(メトリック)と呼ばれ、
送信時は複数のmetrics(メトリクス)フィールドに含めます。

各metricは、下に示すフィールドで分けることができます。

agentフィールド 送信元を識別
namespaceフィールド 大まかな種別
nameフィールド メトリックの名前
data_pointフィールド 送信するデータ

tags(タグ)を付けることで、より細かくmetricを分類することも可能です。

3.3.2 レスポンス

表3.3-6に測定データPOSTのレスポンスを示します。

3.3.3 測定データのHTTP POSTサンプル

下にSpeedtest CLIを実行して、
回線速度測定結果をMachinistPOSTするBashのサンプルを示します。

これをcronに登録しておけば、
定期的に回線速度測定データを自動でアップロードすることができるようになります。

Bashサンプルにおいて、
-s 6405”は、
テスト先サーバーを「Allied Telesis Capital Corporation Misawa Japan」にする指定です。

speedtest -s 6405 -f csv”と実行していますので、測定結果はCSV形式で出力されます。
各項目の並びと内容については、”speedtest -s 6405 -f csv --output-header”で確認して見てください。
ヘッダー付きで出力されますので、各項目の内容を確認することができます。

グラフ化に使うために抽出しているデータ項目は、次の3つです。

・3番目の「idle latency (Round Trip Time = 俗に言うPing値)」
・6番目の「download(ダウンロード速度(バイト/秒)」
・7番目の「upload(アップロード速度(バイト/秒)」

CSV形式で出力した場合、downloaduploadの値の単位は、バイト/秒となってしまいます。
ビット/秒に変換するために8倍しています(グラフ表示で、bpskbpsMbpsの単位変換が容易)。

3.4 グラフの表示

Machinistでグラフ表示をするのは、とっても簡単です。

図3.4-1に示す Machinistのダッシュボードで「メトリック数」をクリックすれば、
何の設定を行わずとも図3.4-2(注: 本記事の図は、単位を表示するようにしている)に示すように、
metricのグラフが表示されます。

先に示した図1-1に示したように、
ダウンロードアップロードのグラフを重ね合わせることもできますので、
いろいろと試して見てください。

本記事は、ここまでとしたいと思います。

以上

HTMLだと、
思うように編集することは難しく、やろうすればとっても時間が掛かります。
ですので、本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。

役に立てていただければ、うれしく思います。

このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元著者名は明らかにしてください

なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。

お問い合わせ