| tags:raspberry pi logging categories:server

ネットスピードを計測

コマンドでサーバーから外へのネットスピードを計ります。 おなじみの https://www.speedtest.net を利用しているようです。

Speedtest

インストール

パイソンのモジュールなので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:~ $ 

Speedtest

※ チェンライにて滞在中の安宿から、最近は夜の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に書き換えねば、

See Also

comments powered by Disqus