| tags:raspberry pi logging categories:server
ネットスピードを計測
コマンドでサーバーから外へのネットスピードを計ります。 おなじみの https://www.speedtest.net を利用しているようです。
インストール
パイソンのモジュールなのでpip install speedtest-cli
でインストールは可能のようですが、
ラズビアンではパッケージもあるようなのでそちらを利用します。バージョン2.0.2-1がインストールされます。
pi@tacos:~ $ sudo apt install speedtest-cli
Get:1 http://mirror1.ku.ac.th/raspbian/raspbian buster/main armhf speedtest-cli all 2.0.2-1 [23.3 kB]
使い方
コマンドspeedtest
でいたって簡単です。speedtest --share
で結果をシェアーする事ができます。
pi@tacos:~ $ speedtest --share
Hosted by AIS (Phitsanulok) [345.39 km]: 23.406 ms
Testing download speed................................................................................
Download: 10.13 Mbit/s
Testing upload speed......................................................................................................
Upload: 2.14 Mbit/s
Share results: http://www.speedtest.net/result/8556438892.png
pi@tacos:~ $
※ チェンライにて滞在中の安宿から、最近は夜の10時頃に切られてしまうんですが、割とがんばってるのでは。
そして、書き出しオプションもありフォーマットが選べます。
- simple
- csv
- json:割と詳細にわたって情報が得られます。
情報もアップロードされていたりもするみたいですね。。
pi@tacos:~ $ speedtest --simple
Ping: 6.648 ms
Download: 10.64 Mbit/s
Upload: 2.23 Mbit/s
pi@tacos:~ $ speedtest --csv
pi@tacos:~ $ speedtest --json | jq .
{
"download": 9435120.481740829,
"upload": 4211070.094284847,
"ping": 6.735,
"server": {
"url": "http://speedtest-cri1.3bb.co.th/speedtest/upload.php",
"lat": "19.9105",
"lon": "99.8406",
"name": "Chiang Rai",
"country": "Thailand",
"cc": "TH",
"sponsor": "3BB",
"id": "25116",
"host": "speedtest-cri1.3bb.co.th:8080",
"d": 1.3948772586368514,
"latency": 6.735
},
"timestamp": "2019-09-01T12:55:13.449757Z",
"bytes_sent": 5472256,
"bytes_received": 11827776,
"share": null,
"client": {
"ip": "171.4.241.127",
"lat": "19.9",
"lon": "99.8333",
"isp": "3BB Broadband",
"isprating": "3.7",
"rating": "0",
"ispdlavg": "0",
"ispulavg": "0",
"loggedin": "0",
"country": "TH"
}
}
InfluxDBへ書出
パイソンモジュールなので、パイソンスクリプトで利用することもできます。
が、、なぜかシェルで書いていたようなので、、、
cronjobで一定期間毎に走らせて、telegrafのデーターベースに追加していきます。
(春先に動かしていたので、動作上の問題はないと思います)
#!/usr/bin/env sh
timestamp=$(date +%s%N)
hostname=$(hostname)
INFLUXDB_HOST=127.0.0.1
INFLUXDB_PORT=8086
INFLUXDB_DATABASE=telegraf
output=$(/usr/local/bin/speedtest --simple --bytes)
#echo "Output: $output"
line=$(echo -n "$output" | awk '/Ping/ {print "ping=" $2} /Download/ {print "downstream=" $2} /Upload/ {print "upstream=" $2}' | tr '\n' ',' | head -c -1)
curl -XPOST "http://$INFLUXDB_HOST:$INFLUXDB_PORT/write?db=$INFLUXDB_DATABASE" -d "speedtest,host=$hostname $line $timestamp"
#echo "New speedtest sent"
Pythonに書き換えねば、