Internet Monitoring mit K8s und Grafana

Motivation

Nach dem Wechsel auf Glasfaser, hatte ich zwischendurch Ruckler beim Streaming. Das WLAN selbst war gut erreichbar. Das konnte ich mittels einer WLAN Analyzer App kontrollieren.

Die Daten zur Internetnutzung waren nicht ausreichend, um dort ein Problem feststellen zu können. Entsprechend habe ich selbst an einer Lösung gearbeitet, um die Internetgeschwindigkeit regelmäßig zu messen und sie visuell aufzubereiten.

Anforderungen

  • Die Messung soll auf dem Raspberry Pi Kubernetes Cluster stattfinden, weil es 24/7 läuft.
  • Für die Auswertung und Anzeige soll Grafana genutzt werden, weil ich damit bereits länger arbeite.
  • Ich wollte mich nicht selbst um die dauerhafte Speicherung kümmern. Prima, dass die Grafana Cloud einen umfangreichen Funktionsumfang kostenlos anbietet.

Umsetzung

Ich bin relativ schnell auf prometheus_speedtest gestoßen. Dabei handelt es sich um ein Python Package, welches Speedtest.net Ergebnisse als Prometheus Metrics Endpoints anbietet. Auch ein Container Image und passende K8s Manifests waren schon vorhanden.

Die K8s Manifests wurden nahezu komplett übernommen und noch um einen Service hinzugefügt. Danach wurde das Deploy und die Konfiguration des Grafana Agents durchgeführt. In der configmap.yaml müssen die Daten der Grafana Cloud (URL, Username und Password) angepasst werden. Die Metriken werden fest von dem Kubernetes Service “speedtest” eingesammelt.

Die Daten werden in einem Grafana Dashboard angezeigt.

Weiteres

In dem GitHub Repository internet-monitoring habe ich alle benötigten K8s Manifests und die Konfiguration des Grafana Agents und Dashboards als Vorlage veröffentlicht.