Kako (i zašto) sam automatizirao praćenje brzine interneta – Python i Docker

2.2 min read438 wordsPublished On: 1. prosinca 2024.Tags: , , ,

Ako živite u području s lošom infrastrukturom, sigurno ćete razumjeti moju frustraciju. U večernjim satima, kada je veći broj korisnika i uređaja na mreži, moja brzina downloada često pada na 1 Mbps, unatoč tome što plaćam za daleko bolji paket. ISP provider jednostavno ne nudi odgovarajuće rješenje, a ja ostajem zaglavljen s nepouzdanom vezom. Za vrijeme učitavanja ovakvog članka stignem skuhati (i popiti) kavu…

Nakon višemjesečnih problema, odlučio sam istražiti druge opcije. Kao privremeno rješenje, isprobat ću mobilni 4G internet kod drugog providera, bez ugovorne obveze. Za testiranje sam si dao nekih desetak dana. Međutim, ručno provođenje testova brzine svakih sat vremena ili nekoliko puta dnevno brzo bi postalo zamorno. Zato sam odlučio automatizirati proces testiranja brzine interneta, a na kraju razdoblja napravit ću analizu podataka kako bih donio konačnu odluku.

U ovom članku podijelit ću kako sam izradio skriptu za redovno testiranje brzine, spremanje rezultata i pakiranje svega u Docker kontejner.

Što ćemo raditi? Rješenje koje:

1. Redovno (npr. svakih sat vremena) mjeri brzinu interneta.

2. Sprema podatke (download, upload, ping, ISP i IP adresu) u log datoteku.

3. Može se pokrenuti na bilo kojem sustavu uz Docker.

4. Omogućava kasniju analizu oscilacija brzine tijekom testnog razdoblja.

Korak 1: Python skripta za testiranje brzine

Prvo, trebamo Python skriptu koja koristi modul speedtest za provođenje testova brzine i zapisivanje rezultata u log (.txt) file. Evo kako izgleda:

Objašnjenje:

  • Skripta koristi biblioteku speedtest-cli za mjerenje download, upload brzine i pinga.
  • Log datoteka (speed_test_log.txt) se čuva unutar /app/logs direktorija.
  • Interval između testova preuzima se iz environment varijable INTERVAL, što omogućava promjenu prilikom pokretanja kontejnera s docker-compose.

Korak 2: Kreiranje Dockerfile-a

Evo Dockerfile-a za našu aplikaciju:

Korak 3: Konfiguracija Docker Compose-a

omoću Docker Compose-a možemo jednostavno pokrenuti našu aplikaciju i postaviti “volume” za spremanje logova:

Kopiraj

Važno: volume dodajemo kako bi sačuvali log file lokalno. U suprotnom ćemo nakon zaustavljanja kontejnera izgubiti sve podatke.

Korak 4: Pokretanje aplikacije

Kreirajte direktorij za projekt:

Kopiraj

 

Postavite datoteke:

    • Kopirajte speed_test.py, Dockerfile i docker-compose.yml u projektni direktorij.

Pokrenite aplikaciju:

Kopiraj

 

Provjerite status:

Kopiraj

Provjerite logove:

Kopiraj

Pregledajte spremljene rezultate:

Svi rezultati se nalaze u lokalnom logs direktoriju. Otvorite speed_test_log.txt za detalje.

Rezultati će izgledati ovako:

Kopiraj

Nakon što prikupim podatke za 10 dana, analizirat ću logove pomoću Python skripte i donijeti odluku o prelasku na novog providera.

Nadam se da vam ova skripta neće trebati za rješavanje problema koji ja imam, no ako ih imate ili se samo želite igrati, vjerujem da će pomoći! 😊

Podijelite na društvenim mrežama