Monitoring der Fritz!Box mit Grafana auf dem Raspberry Pi 3

Monitoring der Fritz!Box mit Grafana auf dem Raspberry Pi 3

Da ich sehr gerne meine Fritz!Box Monitore bzw. händisch immer wieder schaue, um zu sehen wie stabil und schnell meine Leitung ist habe ich nach einer zeitgemäßen Möglichkeit gesucht.

Bei meiner Lösung setze ich auf Grafana, Fritzcollectdb und und InfluxDB auf dem Raspberry Pi. Vorab als Warnung, der Raspberry Pi verschlingt hierbei massive Leistung. In meinem Umsetzung habe ich auf Raspbian gesetzt.

FritzCollect installieren

Um die Fritz!Daten korrekt abzugreifen ist es am einfachsten über Python zu gehen. Hier kann man Python Pip nutzen und sollte entsprechend die xslt und xml2 Libary installieren.

#Python Pip Installation
apt-get install -y python-pip
#Libary Installation
apt-get install -y libxml2-dev libxslt1-dev
#Fritzcollect Deamon Installation
pip install fritzcollectd

Für die Installation von des Fritz Collect Deamons benötigt hier jetzt ersteinmal einen Tee, Kaffee oder ein anderes Getränk das man in der Zeit geniesen kann. Bei mir dauerte die Installation auf dem Raspberry Pi 3 über 35 min. Das kann auf einem Raspberry ziemlich lange dauern. Insbesondere braucht die Installation von lxml eine ganze Weile: Bei Running setup.py bdist_wheel for lxml also nicht die Geduld verlieren – auch wenn sich scheinbar nichts mehr tut! Mein Raspi 3 brauchte dafür ungefähr eine halbe Stunde.

FritzCollect Vorbereiten

Um die Daten der Fritz!Box abholen zu können, muss man die Statusinformationen über UPnP abrufen können. Diese Einstellung ist über Heimnetz > Netzwerk > Netzwerkeinstellungen zu finden. Ebenso muss der Zugriff auf Anwendungen genehmigt sein.

fritzbox - upnp

Unter den Benutzereinstellungen sollte zudem ein Benutzer eingerichtet werden, über den der Collector später die Daten abfragen kann, ohne den vollständigen Zugang zur Fritz!Box zu nutzen. Dieser benötigt dann die Rechte für die Sprachnachrichten und Smart Home.  fritzbox - user

Danach benötigen wir keinen Zugang mehr zur FritzBox. 

FritzCollectD installieren und einrichten

Damit der FritzCollect Deamon alles 10 Sekunden Daten holt, müssen wir noch den eigentlichen collect Deamon installieren. 

apt-get install -y collectd

Da das Tool viele Abhängigkeiten hat, kann man in Ruhe das angefangene Getränk leer trinken, Emails checken usw. Insgesamt dauert das auch noch mal rund 5 Minuten auf einem frischen System. Nachfolgend müssen wir die Konfiguration von collectd anpassen, damit die Daten ausgelesen werden können.

nano /etc/collectd/collectd.conf

Hier müssen wir das Python und das Netzwerk Plugin auskommentieren, nicht ans Ende anhängen, da man weiter unten noch die Plugin Blöcke anpassen muss.

LoadPlugin python
LoadPlugin network

Das Network Plugin trägt dazu bei, dass die gesammelten Daten der Fritz!Box spätere InfluxDB geschrieben werden:

Server "127.0.0.1" "25826"

Am Schluss fügen wir noch einen eigenen Block für das Python Plugin hinzu:

Import "fritzcollectd"
Address "fritz.box"
Port 49000
User "benutzer"
Password "passwort"
Hostname "FritzBox"
Instance "1"
Verbose "False"

Hier ist natürlich entsprechend deinen Hostnamen der Box, Benutzer und Passwort anpassen. Das Ganze noch speichern und fertig.

InnofluxDB installieren

Nun geht es an die Langzeit Speicherung, das Backend hinter dem ganzen System. Als Datenbank kommt InfluxDB zum Einsatz, diese ist speziell auf solche Echtzeit Statistiken und Graphen ausgelegt. Sie basiert auf GO und wird überwiegend als beste Datenbank für Grafana Anwendungen präsentiert. Allerdings hat Raspbian leider die Debian Eigenschaft, viele veraltete Software Versionen zu vertreten. Daher kommt das Apt Repository des Herstellers selbst zur Geltung:

curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
apt-get update
apt install influxdb
systemctl enable influxdb
systemctl start influxdb

Nachfolgend muss die InfluxDB Konfiguration angepasst werden, diese ist zu finden unter /etc/influxdb/influxdb.conf , hier passen wir den Abschnitt [collectd] an.

[[collectd]]
enabled = true
bind-address = "127.0.0.1:25826"
database = "collectd"
typesdb = "/usr/share/collectd/types.db"

Anschliesend muss der Collect Daemon und die Datenbank neugestartet werden.

systemctl restart collectd und
systemctl restart influxdb

Grafana installieren

Nun kommen wir zum Frontend, hierfür wird Grafana installiert. Auch hier ist das Problem, dass das aktuelle Release bei Debian nicht vorhanden ist. Allerdings downloaden hier einfach das fertige Paket. Am besten vor der Installation schauen, ob es ein neues Release gibt und das es auch die ARM Version ist. 

cd ~/Downloads && wget https://dl.grafana.com/oss/release/grafana-rpi_6.4.4_armhf.deb
dpkg -i grafana-rpi_6.4.4_armhf.deb
/bin/systemctl daemon-reload
/bin/systemctl enable grafana-server
/bin/systemctl start grafana-server

Auch dieser Prozess kann auf dem kleinen Pi etwas länger dauern. 

Grafana einrichten

Nun kommt der eigentlich wichtige und “komplizierte” Teil des gesamten Prozesses. Das einrichten des Grafana Dashboards. Unter localhost:3000 begrüßt nun einen das Login Fenster. Hier ist der Benutzername und das Passwort klassisch admin:admin. Umittelbar nach dem Login möchte Grafana das man das Passwort ändert. 

Danach gehen wir auf der Navigationsleiste am linken Rand auf Einstellungen und dort auf Datasources. Hier können wir nun entsprechende Datenquellen hinzufügen. Anhand des Bildes könnt ihr die entsprechenden Einstellungen sehen. Denkt daran das TLS Zertifikat zu ignorieren. 

Das Designen des Dashboards kann sehr lange dauern und in sehr ausführlichen und komplizierten SQL Befehlen enden. Die einfache und effektivste Methode hierfür ist das Fertige Dashboard auf Grafana zu nutzen. Hier zu muss man einfach auf Dashboard hinzufügen und dort auf Import klicken. Dort muss unter ID das Dashboard Nr. 713 eingetragen werden. Hier nur einmal klicken und warten. Der Prozess kann etwas Zeit in Anspruch nehmen. Abschließend nicht das Speichern rechts oben vergessen. 

Wenn ihr das Dashboard ohne Login sehen möchtet, müsst ihr unter der Grafana Config noch [auth.anonymous] auf enabled = true setzen.

Leider habe ich die Konfiguration mit entsprechenden Smart Home Geräten noch nicht hinbekommen. Auch ein geeignetes automatisches Backup der Datenbank fehlt derzeit noch.

Tipp: Wenn ihr einen Bildschirm angeschlossen habt, nutzt Chrome im Kiosk Modus.