Files in this bundle:
speedlogger.py— Cross-platform Python script that runs Speedtest CLI, logs tospeedtest.db(SQLite),speedtest.csv, andraw_logs/(JSON raw output). Sends alerts to Discord webhook when configured.run_speedlogger.ps1— PowerShell helper to run the script and optionally register a Windows Scheduled Task.grafana_dashboard_sample.json— A simple sample Grafana dashboard JSON (placeholder) you can import and customize.sample_raw.json— an example speedtest raw JSON (demo).speedtest_bundle.zip— this archive.
- Install Python 3.8+ and add to PATH.
- Install
requests:pip install requests - Install Ookla Speedtest CLI (preferred): https://www.speedtest.net/apps/cli
- Or
pip install speedtest-cli(python wrapper), but Ookla's CLI is recommended.
- Or
- Place this folder somewhere like
C:\Users\You\speedlogger - Configure Discord webhook:
- Create a Discord webhook in a channel (Server Settings → Integrations → Webhooks) and copy the URL.
- Either set an environment variable
DISCORD_WEBHOOKor editspeedlogger.pyand setDISCORD_WEBHOOK = 'https://...'in the CONFIG section.
- Test run:
- Open PowerShell, navigate to the folder, run:
python speedlogger.py
- Open PowerShell, navigate to the folder, run:
- (Optional) Register scheduled task using the helper (run as Administrator in PowerShell):
. un_speedlogger.ps1 -RegisterTask -IntervalMinutes 30 -PythonPath "C:\Python39\python.exe"- This will run the script every 30 minutes.
- Install Python 3.8+ and
requests:pip3 install requests - Install Ookla Speedtest CLI (see https://www.speedtest.net/apps/cli) or
pip3 install speedtest-cli - Set
DISCORD_WEBHOOKenv var or editspeedlogger.pyconfig. - Add a cron entry (every 30 minutes):
*/30 * * * * /usr/bin/python3 /path/to/speedlogger.py >> /path/to/speedlogger.log 2>&1
- Defaults: download/upload threshold = 150 Mbps, ping threshold = 80 ms. Edit the top of
speedlogger.pyto change. - Run tests at least 48–72 hours to get meaningful median/percentile values before complaining to ISP.
- Keep raw JSON files from
raw_logs/for timestamps and server IDs. - Periodically run
mtr/tracerouteto problem servers and keep those logs with matching timestamps. - Run VPN tests and iperf3 tests to corroborate shaping/peering issues.