Semplice non-SNMP network speed monitor

“Per cominciare, misurare tutto ciò che può essere facilmente misurato.
Nessun problema, se non che funziona solo finché funziona.

Come migliaia di italiani, ho una ADSL. Ed un router economico, che ovviamente non ha una interfaccia SNMP degna di questo nome e, quindi, non è possibile prelevare le statistiche direttamente da lì. Voglio però tenere sotto controllo la larghezza di banda dell’ADSL, per capire se il provider ha dei problemi ed avere un metro di valutazione sulle prestazioni e sulla velocità dichiarata ed effettiva.

Ci sono molti servizi di misurazione della velocità, come il famoso “speedtest” di OOkla, sul quale Matt Martz ha sviluppato un frontend in Python per usare il servizio da console.

Sono quindi partito da qui, da speedtest-cli, a “Command line interface for testing internet bandwidth using speedtest.net“, per scrivere un veloce script in Python che salva i risultati in un database SQLite3 in cui ogni riga ha il tempo di “ping”, la velocità di upload, di download ed il timestamp del test.

Ho poi scritto una veloce pagina in PHP che, sfruttando la libreria grafica Chart.js, visualizza il grafico delle velocità istantanee raccolte periodicamente (ho usato crond per impostare l’esecuzione del test di velocità ogni 15 minuti).

Il codice è su GitHub al repo https://github.com/michelep/speedmonitor.

Ho installato lo speedmonitor su una board BeagleBone, analoga alla più famosa RaspberryPi, che già uso per PiHole: per quanto mi riguarda, una ottima soluzione per tenere sotto controllo l’ADSL casalinga 🙂

Sia chiaro che non si tratta di un prodotto sofisticato: è una soluzione quick and dirty per mantenere sotto controllo le prestazioni dell’ADSL casalinga, sfruttando ciò che già ho, che funziona senza troppe pretese. Se vi piace o vi incuriosisce, liberi di scaricare, provare, modificare e copiare il codice, ovviamente open e free !

Installazione

Dopo aver installato speedtest-cli e clonato il repo dello speedmonitor con:

git clone https://github.com/michelep/speedmonitor.git

potete copiare lo script speedmonitor.py in /usr/local/bin:

cp speedmonitor.py /usr/local/bin/

e poi configurare il crond da root con:

sudo crontab -e

dove aggiungere la riga:

*/15 * * * * /usr/local/bin/speedmonitor.py

A questo punto, copiare la cartella ‘html’ dentro /var/www:

cp ./html/ /var/www/

Ovviamente deve essere già installato sia il server web che l’interprete PHP5, con le relative librerie SQLite3 (se avete già installato PiHole, c’è già tutto l’occorrente).

La verifica del funzionamento può essere fatta eseguendo speedmonitor.py e verificando la creazione del database in /var/spool/speedmonitor.db (path di default).

Potete accedere ai dati nel DB attraverso la cli di SQLite con:

sqlite3 /var/spool/speedmonitor.db

e poi eseguendo una “select” sulla tabella “speed”:

SELECT * FROM speed;

Supporto

Non c’è alcun tipo di supporto, garanzia o assistenza sul prodotto. Se funziona, bene. Altrimenti provate a lasciare un commento qui sotto e vedrò, disponibilità permettendo, di aiutarvi. Senza alcun impegno, ovviamente.

Michele Pinassi

Nato a Siena nel 1978, dopo aver conseguito il diploma in "Elettronica e Telecomunicazioni" e la laurea in "Storia, Tradizione e Innovazione", attualmente è Responsabile del Sistema telefonico di Ateneo presso l'Università degli Studi di Siena. Utilizza quasi esclusivamente software libero. Dal 2006 si occupa di politica locale e da giugno 2013 è Consigliere Comunale capogruppo Siena 5 Stelle.

Potrebbero interessarti anche...

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.