Docker setup consisting out of Grafana incl. a pre-configured dashboard, InfluxDB and a speedtest.net CLI test runner.
- Make sure you've installed all requirements
- Clone this repository:
git clone https://github.com/mschirrmeister/docker-speedtest-grafana
- Create a copy of the sample
.env
file and adjust it at will:
cp .env.sample .env
- Spin up the containers:
docker-compose up -d
If you experience performance issues, like you do not get the speed that you expect, or if you run it outside of Docker, then it might be related to the default Docker bridge
network. If that is the case have a look at the file docker-compose-macvlan.yml
. You have to change the network to your macvlan
network, or create one if you do not already have one. Only the speedtest container needs an ip from your network.
docker compose -f docker-compose-macvlan.yml up -d
You can make use of the following environment variables / configurations:
Environment variable | Default value | Description |
---|---|---|
GRAFANA_PORT |
3000 |
Port to bind Grafana webinterface on the host system |
SPEEDTEST_SPEEDTEST_INTERVAL |
3600 |
Interval/pause (in seconds) between speedtests |
SPEEDTEST_HOST |
local |
Display name of the client |
SPEEDTEST_SERVER |
none | Optionally set specific speedtest.net server ID, otherwise use the closest |
INFLUXDB_DB |
speedtest |
Database to save speedtest results |
INFLUXDB_HOST |
influxdb |
Name of the InfluxDB host/containers |
INFLUXDB_USERNAME |
root |
Username for InfluxDB authentication |
INFLUXDB_PASSWORD |
root |
Password for InfluxDB authentication |
$ docker-compose up -d
Creating speedtest_influxdb_1 ... done
Creating speedtest_grafana_1 ... done
Creating speedtest_speedtest_1 ... done
$ docker-compose stop
Stopping speedtest_influxdb_1 ... done
Stopping speedtest_grafana_1 ... done
Stopping speedtest_speedtest_1 ... done
$ docker-compose stop
$ docker-compose pull
$ docker-compose rm
$ docker-compose up -d
$ docker-compose logs -f
$ docker-compose logs -f grafana
By default the dashboard shows all speedtest results. To filter for a specifc host, simply add a and host = 'local'
statement in the WHERE
clause of the SQL select.
Example (Download Time Serie):
SELECT mean("value") FROM "download" WHERE $timeFilter and host = 'local' GROUP BY time($interval) fill(null)
Access http://${HOSTNAME}:${GRAFANA_PORT}
(http://localhost:3000 by default) and login using the following default credentials:
- Username:
admin
- Password:
admin
- Fork it
- Create your feature branch:
git checkout -b feature/my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin feature/my-new-feature
- Submit a pull request
- Docker (incl.
docker-compose
)
1.0.0