Ach ja, die Fritz!Box. Einer der beliebtesten Router, da sie viele Funktionen bietet, leistungsstark ist und dabei noch einfach in der Konfiguration. Wer jedoch mal mit anderen Routern wie dem UniFi Security Gateway oder gar pfSense gearbeitet hat, vermisst vermutlich die hübschen Dashboards, welche nicht nur modern aussehen, sondern auch ein paar sinnvolle Informationen auf einem Blick bieten. Genau so ein Dashboard möchten wir hier mit Grafana nachbauen und bekommen ein hübsches Fritzbox Monitoring.
Raspberry Pi vorbereiten
Ich habe mich für ein Raspberry Pi Zero entschieden, da ich gerade kein anderes Raspberry Pi zur Hand habe und glaube, dass ein Pi Zero ausreichend sein sollte. Ob dem so ist, werden wir zusammen herausfinden.
Zunächst also das aktuelle Raspbian auf eine SD-Karte schreiben, inkl. der ssh-Datei auf der Boot-Partition.
Da wir direkten Zugriff haben möchten und sich das Raspberry Pi Zero nur mit WLAN ins Netzwerk bringen lässt, erstellen wir neben der ssh-Datei auch eine WLAN-Konfig-Datei. Dazu erstellen wir ebenfalls auf der Boot-Partition eine neue Datei mit dem Namen
wpa_supplicant.conf
mit folgendem Inhalt:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WLAN-Name"
psk="Passwort"
}
SSID und PSK müssen natürlich angepasst werden.
Nach dem Booten können wir uns nun direkt über Putty verbinden.
Wie immer erst einmal das Kennwort mit passwd ändern und updaten
sudo apt-get update && sudo apt-get -y upgrade
Nun gehen wir noch schnell in die raspi-config (sudo raspi-config) und ändern den Hostnamen unter Network Otions auf etwas sinnvolles.
Anschließend müssen wir das Raspberry Pi neustarten.
Installation
Die Daten der Fritz!Box können wir über das Python-Paket fritzcollectd sammeln.
Das müssen wir natürlich erst einmal auf dem Raspberry Pi installieren:
sudo apt-get install -y python-pip
sudo apt-get install -y libxml2-dev libxslt1-dev
sudo pip install fritzcollectd
Damit wird unser kleines Raspberry Pi Zero eine Weile beschäftigt sein (Wirklich! Das kann ziemlich lange dauern).
Wir können aber die Fritz!Box parallel konfigurieren, denn diese muss ihre Infos per UPnP bereitstellen.
Also schnell eingeloggt und unter Heimnetz > Netzwerk > Netzwerkeinstellungen folgendes aktivieren:
Es ist zudem dringend zu empfehlen, einen eigenen Benutzer für das sammeln der Daten anzulegen. Dieser kann unter System >Fritz!Box-Benutzer angelegt werden.
Evtl. muss dies mit einem Telefon bestätigt werden. Ich habe den Benutzer collect genannt.
Zurück zur SSH-Shell und folgenden Befehl eingeben, um collectd zu installieren:
sudo apt-get install -y collectd
Es gibt einen HAUFEN an abhängigen Paketen, daher dauert auch das wieder etwas.
Ist die Installation durchgelaufen, passen wir die Config an, damit die Daten von der Fritz!Box ausgelesen werden.
sudo nano /etc/collectd/collectd.conf
Zunächst das Kommentarzeichen in der Zeile #LoadPlugin python
und #LoadPlugin network
entfernen.
Folgende Blöcke muss ans Ende der Datei – aber vor der Zeile <Include "/etc/collectd/collectd.conf.d">
eingefügt werden (mit Bild runter scrollt man schneller ans Ende der Datei):
<Plugin network> Server "127.0.0.1" "25826" </Plugin>
<Plugin python> Import "fritzcollectd" <Module fritzcollectd> Address "192.168.192.1" Port 49000 User "benutzer" Password "passwort" Hostname "FritzBox" Instance "1" Verbose "False" </Module> </Plugin>
“benutzer” und “passwort” müssen mit dem zuvor angelegten Fritz!Box-Benutzer ersetzt werden, sowie die IP-Adresse.
Die Datei speichern wir mit STRG+O und verlassen diese mit STRG+X.
InfluxDB installieren
Nun sind wir aber noch lange nicht fertig mit der Installation, denn die gesammelten Daten müssen gespeichert werden. Und das passiert in einer InfluxDB.
Diese installieren wir auf dem Raspberry Pi so:
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 sudo apt-get update sudo apt install influxdb sudo systemctl enable influxdb sudo systemctl start influxdb
Keine Installation ohne Konfiguration. Weiter geht´s also mit der Konfiguration der InfluxDB, welches die Daten für unser FritzBox Monitoring sammelt.
sudo nano /etc/influxdb/influxdb.conf
Finde den Abschnitt [collectd] und setze folgende Werte:
[[collectd]] enabled = true bind-address = "127.0.0.1:25826" database = "collectd" typesdb = "/usr/share/collectd/types.db"
Wir starten die Dienste mit sudo systemctl restart collectd
und sudo systemctl restart influxdb
neu, damit die Einstellungen übernommen werden.
Grafana installieren
Was bringen uns die Daten, ohne sie hübsch darstellen zu können? Dazu installieren wir nun Grafana.
Für Raspberry Pi 1 und Pi Zero W:
cd ~ mkdir -p Downloads cd Downloads && wget https://dl.grafana.com/oss/release/grafana-rpi_6.7.3_armhf.deb sudo dpkg -i grafana-rpi_6.7.3_armhf.deb
Ab Raspberry Pi 2:
cd ~
mkdir -p Downloads
cd Downloads && wget https://dl.grafana.com/oss/release/grafana_6.7.3_armhf.deb
sudo dpkg -i grafana_6.7.3_armhf.deb
Anschließend:
sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable grafana-server sudo /bin/systemctl start grafana-server
Jetzt können wir endlich die SSH-Shell schließen.
Grafana einrichten
Nun können wir Grafana im Browser öffnen http://ip-des-raspberry-pis:3000/login
Die Logindaten lauten admin/admin.
Zunächst müssen wir unsere InfluxDB als Datenquelle angeben, damit Grafana etwas zum Anzeigen hat.
Dazu gehen wir links in der Menüleiste auf Configuration (das Zahnrad) und Data Sources.
Klicke auf Add Data Source und anschließend auf InfluxDB und gib die Daten wie auf dem Screenshot zu sehen ein:
Ein Klick auf Save & Test sollte eine grüne Meldung hervorrufen:
Juhu! Nun haben wir eine Datenbank mit Daten und Grafana, welches auf die Daten zugreifen kann.
Nun fehlt uns noch ein hübsches Dasboard, um die Daten auch sinnvoll anzuzeigen. Glücklicherweise gibt es eine große Bibliothek an Grafana Dashboards für so ziemlich alles, was Daten ausspuckt. An dieser Stelle installieren wir das Fritz!Box-Dashboard von Christian Fetzers.
In der linken Menüleiste von Grafana klicken wir auf das PLUS (Create) und anschließend auf Import. Hier geben wir einfach die ID des Dashboards 713 ein und wählen im nächsten Fenster im Feld influxdb_collectd wieder unsere Datenbank collectd aus.
Und schwubs haben wir ein modernes Dashboard für unser FritzBox Monitoring.
Moin! Danke, das funktioniert so out-of-the-box. So wie es aktuell gebaut ist kann allerdings nur ein (1) device damit aufgezeichnet werden – hast du einen Ansatz wie man mehrere FritzBoxen oder auch Repeater aufzeichnen könnte?
Viele Grüße, Flo
Probier am Besten mal mit einem zweiten Modul
<Plugin python>
Import “fritzcollectd”
<Module fritzcollectd1>
<Module>
<Module fritzcollectd2>
Hallo
Bei mir findet Grafana die Datenbank cllectd nicht. Hast du eine Idee?
Schau dir deine Konfigurationen nochmal genau an. Vermute einen Tippfehler.
Hallo,
ich habe ein Problem bei der DB-Config in Grafana.
Bekomme ein FM: database not found: collectd
Kannst du mir da helfen?
Schau dir deine Konfigurationen nochmal genau an. Vermute einen Tippfehler.
Danke für die Anleitung. Hab es auf nem Pi Zero W laufen und immer nach ner Woche funktioniert es nicht mehr…
Irgendwelche Ideen woran es liegen könnte?
Hast du eine leistungsstarke SD-Karte im Pi? Wenn sich zu viele Daten ansammeln und die SD-Karte zu langsam ist, kann es zu Problemen kommen.
Kann man auch die einzelnen Ports der Fritzbox monitoren?
Das ist mir leider nicht bekannt und kann ich mir auch nicht vorstellen.
Das geht schon stark in den Enterprise-Bereich. Die Ports der Fritzox werden sich wie ein unmanaged Switch verhalten.
[…] der meistgeklickte Artikel meines Blocks Fritz!Box Monitoring mit Raspberry Pi Zero W ist, habe ich mir überlegt, eine etwas aktuellere Version dazu zu verfassen, damit ihr eine […]
kann man irgendwo sehen, was alles die Fritzbox für’s Monitoring sendet? Kann man auch den Status vom W-Lan-Status bestimmter Geräte anzeigen lassen? Z.B. ob ein Handy im Netzwerk angemeldet ist oder nicht? Möchte für meine Oma eine Anzeige machen, ob ich oder meine Freundin daheim sind oder nicht.
Hallo Alexander,
das ist eine gute Frage.
Ich habe so eine Anwesenheitsanzeige mit ioBroker umgesetzt.
Wenn du möchtest, kann ich demnächst dazu eine Anleitung schreiben.
oh das wäre super, hab mir nämlich extra dafür den Raspberry geholt 😀 und bisher nur da Dashboard hinbekommen 😀
Hallo Alexander,
hier die gewünschte Anleitung:
https://domblox.de/anwesenheit-mit-fritzbox-und-iobroker-auf-rasperry-pi/
Wow supi, probier ich später mal aus, danke 🙂
Vielen Dank für deine Anleitung, Dominic!
Leider bekomme ich Fehler bei der Installation auf meinem Pi Zero W. Soviel habe ich herausfinden können:
*schnief* Tipps?
Hey, danke für die tolle Anleitung. Leider aktualisieren sich nicht die Daten in Grafana bei mir. Die DB schreibt fleißig Daten. Muss ich evtl. Grafana neu installieren?
Servus, bei der folgenden Zeile kommt eine Fehlermeldung: sudo apt-get update OK:1 http://raspbian.raspberrypi.org/raspbian stretch InRelease OK:2 http://archive.raspberrypi.org/debian stretch InRelease Holen:3 https://repos.influxdata.com/debian stretch InRelease [7.021 B] Ign:3 https://repos.influxdata.com/debian stretch InRelease Es wurden 7.021 B in 1 s geholt (4.399 B/s). Paketlisten werden gelesen… Fertig W: GPG-Fehler: https://repos.influxdata.com/debian stretch InRelease: Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY D8FF8E1F7DF8B07E W: The repository ‘https://repos.influxdata.com/debian stretch InRelease’ is not signed. N: Data from such a repository can’t be authenticated and is therefore potentially dangerous to use. N: See apt-secure(8) manpage for repository creation and user configuration details.… Weiterlesen »