DSL Geschwindigkeiten

Da ich in den vergangenen Wochen einen neuen DSL-Vertrag abgeschlossen habe, bei dem vermehrt Probleme bei der Erreichbarkeit meines privaten Webservers auftraten, habe ich beschlossen Verbindungsgeschwindigkeiten und Erreichbarkeit zu überwachen. Basierend auf diesem Blogpost und dem zugrundeliegenden Python-Tool zur Messung von Verbindungsgeschwindigkeiten von Janis Jansons habe ich eine dauerhafte Geschwindigkeitsüberwachung, die alle 10 Minute ausgeführt wird, eingerichtet.
Da die produzierte *.csv-Datei allerdings reichlich unübersichtlich ist, habe ich ein kleines Skript in R geschrieben, um die Daten, die in die *.csv-Datei geschrieben werden, zu visualisieren. Zunächst muss also R installiert werden. Unter Ubuntu erfolgt das mit folgendem Befehl:
sudo apt-get install r-base
Danach speichert man das folgende Skript lokal unter ~/scripts/speedtest_plot.R ab.

Und führt es anschliessend ebenso zeitgesteuert, wie den Speedtest, als Cronjob aus. Dazu öffnet man mit crontab -e die Crontab und fügt folgende Zeile ein:
1 * * * * Rscript ~/scripts/speedtest_plot.R 2>&1 /dev/null
Dieser Befehl, der stündlich ausgeführt wird, produziert drei unterschiedliche Plots, von denen einer – nämlich der mit den Ergebnissen der Geschwindigkeitsmessungen der letzten Woche – hier dargestellt ist. Hinter dem verlinkten Bild findeet sich eine interaktive R Shiny-Animation:

Geschwindigkeitsdaten der letzten Woche

2 thoughts on “DSL Geschwindigkeiten

  1. ralf

    Hallo Arnd, beim Ausführen des Scripts erhalte ich diesen Fehler:

    Fehler in plot.window(…) : endliche ‘xlim’ Werte nötig
    Ruft auf: plot -> plot.default -> localWindow -> plot.window
    Zusätzlich: Warnmeldungen:
    1: In min(x) : kein nicht-fehlendes Argument für min; gebe Inf zurück
    2: In max(x) : kein nicht-fehlendes Argument für max; gebe -Inf zurück
    Ausführung angehalten

    Kannst Du mir einen Tip geben wo ich suchen soll?

  2. Arnd Post author

    Das dürfte am Import der Daten (Zeile 8: read.table) oder dem Konvertieren der Zeitspalte von der Klasse “character” nach “POSIXlt” liegen (Zeile 15: strptime).

    read.table:
    Durch andere Spaltenseparatoren (sep=",") oder Dezimaltrennzeichen (dec=".") könnte der Datenimport schief laufen, so dass im folgenden keine Daten in data.df existieren, was erst mit Aufruf des ersten plot-Befehls als Fehlermeldung bemerkbar wird.

    strptime:
    Am wahrscheinlichsten ist aber ein Fehler bei der Konvertierung der Zeit von “character” nach “POSIXlt”. Insbesondere der abgekürzte Wochentag “%a” und der Monat “%b” im Argument format="%a, %d %b %Y %H:%M:%S %z" sind abhängig von lokalen Systemeinstellungen. Das gilt bei der Konvertieung hier in R, aber auch schon beim Export der *.csv-Datei aus Python. In diesem R-Skript ist explizit Sys.setlocale("LC_TIME", "en_US.utf8") gesetzt, vielleicht führt das bei Ihnen zu Problemen.

Leave a Reply

Your email address will not be published. Required fields are marked *