This project is a prometheus exporter for speedtests implemented in go. It runs automatically speedtests with the speedtest.net API and exports the result as prometheus metrics. It supports native speedtest by using speedtest-go.
I created this project because i saw Jeff Geerling's video about his speedtest setup. When looking into it, he uses a python based speedtest-exporter. At this point i could have just used that as well, but i was bored and wanted to program something. Hence this project.
One important functionality is that this projects implements prometheus remote_write, so it can push the metrics directly to e.g. grafana cloud.
Container Registry | Image |
---|---|
Github Container | ghcr.io/heathcliff26/speedtest-exporter |
Docker Hub | docker.io/heathcliff26/speedtest-exporter |
There are different flavors of the image:
Tag(s) | Description |
---|---|
latest | Last released slim version of the image. |
slim | Contains only the speedtest-exporter binary and uses native golang implementation. |
cli | Alpine based container that also contains the speedtest.net cli client binary. Uses the speedtest.net cli to run the tests. |
vX.Y.Z | Released version of the image. |
To run the image with default settings simply use:
podman run -d -p 8080:8080 ghcr.io/heathcliff26/speedtest-exporter:slim
You can then view you metrics under http://localhost:8080/metrics
Output of speedtest-exporter -h
Usage of speedtest-exporter:
-config string
Optional: Path to config file
-env
Used together with -config, when set will expand enviroment variables in config
-version
Show the version information and exit
An example configuration can be found here.
The following metrics are exported:
Metric | Description |
---|---|
speedtest_jitter_latency_milliseconds |
Speedtest current Jitter in ms |
speedtest_ping_latency_milliseconds |
Speedtest current Ping in ms |
speedtest_download_megabits_per_second |
Speedtest current Download Speed in Mbit/s |
speedtest_upload_megabits_per_second |
Speedtest current Upload Speed in Mbit/s |
speedtest_data_used_megabytes |
Data used for speedtest in MB |
speedtest_up |
Indicates if the speedtest was successful |
A ready made dashboard for the exporter can be imported from json. The json file can be found here.
The dashboard is also published on grafana.com with the id 20115.