Fritz!Box Monitoring mit Raspberry Pi Zero W

Raspberry Pi Zero W mit Sherlock EmojiAch 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.

ISO auf SD Karte schreiben
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:

Fritzbox Einstellungen zum Datensammeln

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 networkentfernen.

Plugins freigeben

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"

collectd konfugurationsdatei

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

Grafana Login Screen

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.

Data Source hinzufügen

Klicke auf Add Data Source und anschließend auf InfluxDB und gib die Daten wie auf dem Screenshot zu sehen ein:

KOnfiguration der Datenquelle

Ein Klick auf Save & Test sollte eine grüne Meldung hervorrufen:

Verbindung zur Datenquelle erfolgreich

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.

das fertige Dashboard

Dominic hat 2012 als Jahrgangsbester die Ausbildung zum Informatik-Kaufmann abgeschlossen und ist seit dem als Systemadministrator und IT-Supporter tätigt. Sein erstes Netzwerk baute er mit 13 Jahren auf, um eine LAN-Party zu hosten. Seit dem ist IT für ihn eine Lebenseinstellung.

Related posts

Abonnieren
Benachrichtige mich bei
guest
19 Comments
Inline Feedbacks
View all comments
Florian
Florian
3 Jahre zuvor

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

MisterIT
MisterIT
Reply to  Florian
1 Jahr zuvor

Probier am Besten mal mit einem zweiten Modul

<Plugin python>
   Import “fritzcollectd”
   <Module fritzcollectd1>
  <Module>
  <Module fritzcollectd2>

Marcel
Marcel
3 Jahre zuvor

Hallo
Bei mir findet Grafana die Datenbank cllectd nicht. Hast du eine Idee?

Jürgen
Jürgen
2 Jahre zuvor

Hallo,
ich habe ein Problem bei der DB-Config in Grafana.
Bekomme ein FM: database not found: collectd
Kannst du mir da helfen?

Jeff
Jeff
2 Jahre zuvor

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?

JStracke
JStracke
2 Jahre zuvor

Kann man auch die einzelnen Ports der Fritzbox monitoren?

trackback
FritzBox Monitoring mit Docker-Containern - DomBlox
2 Jahre zuvor

[…] 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 […]

Alexander
Alexander
1 Jahr zuvor

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.

Alexander
Alexander
Reply to  Dominic
1 Jahr zuvor

oh das wäre super, hab mir nämlich extra dafür den Raspberry geholt 😀 und bisher nur da Dashboard hinbekommen 😀

Alexander
Alexander
Reply to  Dominic
1 Jahr zuvor

Wow supi, probier ich später mal aus, danke 🙂

fricklr
fricklr
1 Jahr zuvor

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:

  • collectd benötigt Java11 (bzw. setzt das voraus?), der Pi Zero schafft aber nur Java8. Habe dann Java8 installiert. Sah dann soweit gut aus.
  • Grafana lässt sich installieren, aber nicht starten (“Failed to start Grafana instance.”).

*schnief* Tipps?

Bob
Bob
1 Jahr zuvor

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?

Markus S.
Markus S.
1 Jahr zuvor

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 »