Speedtest by Ookla – The Global Broadband Speed TestのCLIパッケージを使用して、転送速度の経時変化を見られるようにする
やり方は、前回同様Node exporterのTextfile Collector機能を使用するので、スクリプトの設置のみを行う
構成
パス | 内容 |
---|---|
/share/homes/admin/opt/speedtest | Speedtest CLIインストールフォルダ |
/share/homes/admin/bin/speedtest.sh | Speedtest計測スクリプト |
/share/homes/admin/opt/node_exporter/textfile_collector | 計測結果フォルダ |
/etc/config/crontab | QNAPのcrontab |
Speedtest CLIのインストール
-
インストールフォルダを作成
mkdir /share/homes/admin/opt/speedtest
-
Speedtest CLIのダウンロード Speedtest CLIからCPUに合ったパッケージをダウンロードし、展開してインストール
cd /share/homes/admin/opt/speedtest curl -LO https://install.speedtest.net/app/cli/ookla-speedtest-1.0.0-x86_64-linux.tgz tar -xvf ookla-speedtest-1.0.0-x86_64-linux.tgz
-
実行確認
/share/homes/admin/opt/speedtest/speedtest /etc/ssl/certs/ca-certificates.crt - NOT FOUND /etc/pki/tls/certs/ca-bundle.crt - NOT FOUND /usr/share/ssl/certs/ca-bundle.crt - NOT FOUND /usr/local/share/certs/ca-root-nss.crt - NOT FOUND /etc/ssl/cert.pem - NOT FOUND [2021-09-24 18:12:50.613] [error] Configuration - Problem with the SSL CA cert (path? access rights?) (UnknownException) [2021-09-24 18:12:50.613] [error] Configuration - Cannot retrieve configuration document (0) [2021-09-24 18:12:50.614] [error] ConfigurationError - Could not retrieve or read configuration (Configuration) [2021-09-24 18:12:50.614] [error] ConfigurationError - Could not retrieve or read configuration (Configuration) [error] Configuration - Could not retrieve or read configuration (ConfigurationError)
-
ルートCAファイルがないためエラーになっているので、追加します
cd /share/homes/admin/opt/speedtest curl -LO https://curl.se/ca/cacert.pem
-
--ca-certificate
オプションでルートCAファイルを指定して実行確認します。ライセンスに同意すると、そのまま計測が開始されます。/share/homes/admin/opt/speedtest/speedtest --ca-certificate=/share/homes/admin/opt/speedtest/cacert.pem ============================================================================== You may only use this Speedtest software and information generated from it for personal, non-commercial use, through a command line interface on a personal computer. Your use of this software is subject to the End User License Agreement, Terms of Use and Privacy Policy at these URLs: https://www.speedtest.net/about/eula https://www.speedtest.net/about/terms https://www.speedtest.net/about/privacy ============================================================================== Do you accept the license? [type YES to accept]: YES License acceptance recorded. Continuing. Speedtest by Ookla Server: XXXXXXXXXX (id = XXXX) ISP: XXX Latency: 0.00 ms (0.00 ms jitter) Download: 00.00 Mbps (data used: 00.0 MB) Upload: 00.00 Mbps (data used: 00.0 MB) Packet Loss: 0.0% Result URL: https://www.speedtest.net/result/c/xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
計測スクリプト
-
計測ターゲットのサーバIDを調べる
- Speedtestにアクセスして、計測画面を表示する
- Change Serverで任意のサーバを選択する
- サーバ名にカーソルを合わせると、リンク先URLが表示される(されない場合はリンク先URLをコピーする)
- URLの
server_id
パラメータの値を控えておく
-
/share/homes/admin/binにspeedtest.shを作成する
- CSVで結果を出力させて、PING(msec)、Jitter(msec)、パケットロス割合(%)、ダウンロードスピード(Byte/sec)、アップロードスピード(Byte/sec)を得て、それをtextfile_collectorフォルダに格納する
- SERVERIDに調べたサーバIDをセットする
- 実行時にライセンスの同意画面が出るので、
--accept-license
で回避する
#!/bin/bash BINDIR=/share/homes/admin/opt/speedtest OUTDIR=/share/homes/admin/opt/node_exporter/textfile_collector SERVERID=15047 cat <<EOF > $OUTDIR/speedtest.prom.$$ # HELP node_speedtest_latency Latency (ms) by Speedtest # TYPE node_speedtest_latency gauge # HELP node_speedtest_jitter Jitter (ms) by Speedtest # TYPE node_speedtest_jitter gauge # HELP node_speedtest_packetloss Packet loss (%) by Speedtest # TYPE node_speedtest_packetloss gauge # HELP node_speedtest_download Download speed (Byte/sec) by Speedtest # TYPE node_speedtest_download gauge # HELP node_speedtest_upload Upload speed (Byte/sec) by Speedtest # TYPE node_speedtest_upload gauge EOF $BINDIR/speedtest --ca-certificate=/share/homes/admin/opt/speedtest/cacert.pem \ --accept-license \ -s $SERVERID \ -f csv \ | awk -F, '{print "node_speedtest_latency " $3; print "node_speedtest_jitter " $4; print "node_speedtest_packetloss " $5; print "node_speedtest_download " $6; print "node_speedtest_upload " $7}' \ | sed "s/\"//g" \ >> $OUTDIR/speedtest.prom.$$ mv $OUTDIR/speedtest.prom.$$ $OUTDIR/speedtest.prom
-
実行権限付与
chmod +x /share/homes/admin/bin/speedtest.sh
-
実行確認
/share/homes/admin/bin/speedtest.sh
-
出力結果確認
cat /share/homes/admin/opt/node_exporter/textfile_collector/speedtest.prom # HELP node_speedtest_latency Latency (ms) by Speedtest # TYPE node_speedtest_latency gauge # HELP node_speedtest_jitter Jitter (ms) by Speedtest # TYPE node_speedtest_jitter gauge # HELP node_speedtest_packetloss Packet loss (%) by Speedtest # TYPE node_speedtest_packetloss gauge # HELP node_speedtest_download Download speed (Byte/sec) by Speedtest # TYPE node_speedtest_download gauge # HELP node_speedtest_upload Upload speed (Byte/sec) by Speedtest # TYPE node_speedtest_upload gauge node_speedtest_latency 11.047 node_speedtest_jitter 0.179 node_speedtest_packetloss 0.398406 node_speedtest_download 6390817 node_speedtest_upload 4769032
-
ブラウザでNode exporterに取り込まれているか確認
-
Cronに登録
/etc/config/crontab
にそれに追記# この例では毎時0分実行 0 * * * * /share/homes/admin/bin/speedtest.sh
-
crondを再起動して変更を反映
crontab /etc/config/crontab /etc/init.d/crond.sh restart
グラフ化
download,uploadの値はバイト単位なので、bps表記のために8倍にする