My plans with this project was to evaluate the quality of service of my ISP, with periodical tests along the day.
The config file that I use for Telegraf execute a speedtest test every 1 hour, you can change that in input.exec - interval
-
Necessary tools
sudo apt-get install -y apt-transport-https dirmngr gnupg1 sudo apt-get install -y software-properties-common wget
-
Influx Repository
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - source /etc/os-release echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
-
Grafana
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - ## Stable OSS Repository echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list ## Beta OSS Repository echo "deb https://packages.grafana.com/oss/deb beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
-
Speedtest
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61 echo "deb https://ookla.bintray.com/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/speedtest.list
More information about the installation of speedtest cli on: https://www.speedtest.net/apps/cli
-
Install
sudo apt clean all sudo apt update sudo apt install -y influxdb telegraf chronograf grafana speedtest
-
Auto start on startup
sudo systemctl enable --now {grafana-server,influxdb,telegraf}
-
InfluxDB
1.1 You need to edit the
/etc/influxdb/influxdb.conf
1.2 You can use your on configuration or this influxdb.conf.
Note: This configuration file is very simple and should be revised to work with your environment.
1.3 After editing you gonna need restart the service InfluxDB
sudo systemctl restart influxdb
OPTIONAL
1.4 Create a admin userCREATE USER <username> WITH PASSWORD '<password>' WITH ALL PRIVILEGES
1.5 Edit
/etc/influxdb/influxdb.conf
and change the value ofauth-enable
fromfalse
totrue
then restart the influx server with the command:sudo systemctl restart influxd
-
Telegraf
1.1 You need to edit the
/etc/telegraf/telegraf.conf
1.2 You can use your on configuration our this telegraf.conf.
If you user your config, you gonna need to add un
[[inputs.exec]]
, as following, this will execute the speedtest-cli, with 60minutes interval, and return a JSON and store it in your configured[[outputs.influxdb]]
.[[inputs.exec]] commands = ["/usr/bin/speedtest -f json-pretty"] name_override = "Speedtest" timeout = "5m" interval = "60m" data_format = "json" json_string_fields = [ "host", "interface_externalIp", "server_name", "server_id", "server_location", "server_host", "server_ip", "result_url" ]
-
Grafana
3.1 Configuring Grafana Server to run on port 80
3.2 Edit
/etc/grafana/grafana.ini
, uncomment the line http_port = 3000 and change to http_port = 803.3 Allow the binary to run in port 80
sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server
Note: This command need to be executed every time that you update your grafana.
3.4 Configure the InfluxDB datasource. Grafana Doc
3.5 Import the dashboard TICK - Speedtest-External or through Grafana site with:
ID 12618 - https://grafana.com/grafana/dashboards/12618
-
Speedtest
4.1 Run a speedtest test and accept the EULA if you agreespeedtest -f json-pretty
4.2 Copy the .config folder in your home to /etc/telegraf/ and set the permissions
## copy the .config folder in your home to /etc/telegraf/ cp -R ~/.config /etc/telegraf ## set permissions for telegraf chown -R telegraf /etc/telegraf/.config
-
Slow speed on downloads in raspberry pi:
sudo sysctl -w net.core.rmem_max=8388608 sudo sysctl -w net.core.wmem_max=8388608 sudo sysctl -w net.core.rmem_default=65536 sudo sysctl -w net.core.wmem_default=65536 sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 8388608' sudo sysctl -w net.ipv4.tcp_wmem='4096 65536 8388608' sudo sysctl -w net.ipv4.tcp_mem='8388608 8388608 8388608' sudo sysctl -w net.ipv4.route.flush=1