Je Fritzbox-router monitoren met Munin
Monitoring van een Fritzbox met Munin
Een Fritzbox laat in zijn webinterface een heleboel realtime data zien, zoals het gebruik van de internetverbinding en de wifisnelheid. Als je die data doorgeeft aan monitoring-software, kun je makkelijk zoeken naar fouten of andere analyses doen. Een Raspberry Pi is dan al voldoende om de data te verzamelen.
Een Fritzbox laat aardig wat data zien. Je krijgt op een overzichtelijke manier te zien wat er op dat moment in je wifi draait en hoeveel data er deze maand doorheen gegaan is. Na een herstart is die database weer leeg. Maar als je hem continu uitleest met behulp van het TR-064-protocol en dat veilig bewaart op een pc, dan kun je die data met behulp van monitoringsoftware in mooie grafieken weergeven.
We gebruiken hier de monitoringsuite Munin. Het belangrijkste onderdeel daarvan is het over langere termijn loggen van gebruiksgegevens. Munin is er voor Linux, FreeBSD en macOS en is met plug-ins uit te breiden voor het monitoren van een groot aantal andere apparaten. Meerdere ontwikkelaars hebben een plug-in voor de Fritzbox geschreven. We gebruiken hier een interessante verzameling voor het uitlezen van meteen acht verschillende bedrijfswaarden. Die is uitgebracht onder de naam 'FritzboxMunin' en onlangs aangepast aan FritzOS 7 (zie de link onderaan dit artikel). Het is gebaseerd op de Python-module Fritzconnection, die het TR-064-protocol gebruikt om met een Fritzbox te communiceren. We hebben Munin, Fritzconnection en Fritzbox-Munin op een Raspberry Pi 3B+ met Raspbian Stretch uitgeprobeerd. Het installeren gebeurt geheel via de terminal en is op zich een leuk werkje voor op een regenachtige namiddag. Munin is een client-server-based monitoringsysteem dat de data van remote Munin-nodes (bijvoorbeeld aparte pc's) kan inlezen en in zijn geheel kan weergeven. Op die manier zijn complete netwerken te observeren. Voor een afzonderlijke Fritzbox volstaat het echter om de server en een node op een Raspberry Pi te installeren.
We gaan er vanuit dat je de Raspberry Pi rechtstreeks via zijn desktop bestuurt of dat je er remote toegang toe hebt met de commandline via SSH.
Bij de Fritzboxen is de TR-064-interface standaard dichtgezet. Als je in de brow-
ser inlogt bij de Fritzbox via fritz.box of het ip-adres van de router, zet dan rechtsboven meteen de 'Advanced View' aan. Ga vervolgens naar 'Home Network / Home Network Overview / Network Settings' en activeer daar het item 'Allow access for applications'. Sla de instellingen op, zodat de Fritzbox-Munin-plug-in zich kan aanmelden als je bij 'System / FRITZ!Box Users / Login to the Home Network' de optie 'Login with the FRITZ!Box password' activeert. De optie 'Login with FRITZ!Box user name and password' werkt niet.
Meld je vervolgens aan op de Rapberry Pi in een Terminal. Werk eerst de systeemsoftware bij met
sudo apt-get update && apt-get upgrade
Daarna kun je Munin installeren:
sudo apt-get install munin
Stortvloed aan data
Het install-commando haalt ook de verder benodigde pakketten op als die nog niet op het systeem aanwezig zijn. Munin houdt in principe alles bij – de belasting van de cpu en de Apache-webserver op de Raspberry Pi, de netwerkparameters, alle interrupts en nog veel andere dingen. Sommige plug-ins worden pas actief als de bijbehorende dienst op de Raspberry Pi geïnstalleerd is, zoals die voor de SMTP-server Exim.
Om te testen of Munin goed werkt, configureer je de plug-in die Munin heeft voor het opvragen van data van de lokale pc. Meld je daarvoor aan als root op de Pi, anders werkt het aanmaken van een paar automatische links niet:
su – munin-node-configure --shell
--families=contrib,auto | sh -x
exit
Als je wilt weten welke plug-ins er geïnstalleerd zijn, kun je dat in een Netcat-sessie achterhalen met het commando list. De Munin-server wordt daarvoor benaderd via de TCP-poort 4949:
nc localhost 4949 list
De output van meerdere regels moet beginnen met apache_access en eindigen met vmstat. Als je genoeg gezien hebt, kun je de verbinding weer sluiten met quit.
Om Fritzconnection te installeren, de basis die je nodig hebt voor de plug-ins, maak je gebruik van de pakketmanager Python-PIP:
sudo apt-get install python-pip
PIP lost echter niet alle afhankelijkheden van het Frtizconnection-pakket op. Je moet handmatig ook nog wat pakketten installeren:
sudo apt-get install libxml2-dev
libxslt1-dev sudo pip install lxml requests
Dan wordt het tijd Fritzconnection op je Raspberry Pi te installeren:
sudo pip install fritzconnection
Het commando pip list laat zien welke Python-pakketten er geïnstalleerd zijn. Het commando fritzconnection -h toont je een korte handleiding. Meer details over de commando’s kun je zien op de projectwebsite van Fritzconnection (zie de link onderaan dit artikel).
Fritzbox-Munin
Download vervolgens Fritzbox-Munin en pak het uit:
cd ~/Downloads wget https://github.com/Tafkas/
fritzbox-munin/archive/master.zip unzip master.zip
Kopieer de plug-in naar zijn doel en maak daar symbolische links voor aan in de configuratie-directory van Munin:
cd ~/Downloads/fritzbox-munin-master/ sudo cp *.py /usr/share/munin/plugins/ sudo ln -s /usr/share/munin/plugins/*.py
/etc/munin/plugins
Om ervoor te zorgen dat de lokale Muninnode de Fritzbox kan vinden, moet je het configuratiebestand bewerken:
sudo pico /etc/munin/plugin-conf.d/
munin-node
Met deze vijf regels, die je het beste kunt invoegen na het deel exim_mailstate, vindt de node de Fritzbox en authenticeert hij zich:
[fritzbox_*] env.locale en env.fritzbox_ip 192.168.178.1 env.fritzbox_password wachtwoord host_name fritzbox Vul in plaats van 192.168.178.1 daarbij het ip-adres in dat je Fritzbox heeft in het lokale netwerk. Sla de wijzigingen op met de toetsencombinatie Ctrl+X en Y. Herstart de Munin-node dan om ervoor te zorgen dat de veranderingen ook overgenomen worden.
sudo /etc/init.d/munin-node restart
Munin sorteert de data van de lokale machine en de Fritzbox standaard in gemeenschappelijke rubrieken ('Categories'). Je kunt voor de Fritzbox met niet al te veel moeite een eigen rubriek instellen:
sudo pico /etc/munin/munin.conf
Vervang dan home.yourhost.net door de domeinnaam die je in je LAN gebruikt, bijvoorbeeld fritz.box. Zet daaronder de namen van de plug-ins en de Category waar de bijbehorende diagrammen onder gesorteerd moeten worden, bijvoorbeeld 'fritz'. Munin maakt daarbij geen onderscheid tussen grote en kleine letters.
[home.yourhost.net;server] address 127.0.0.1 use_node_name yes f rit z box_ con n e c t ion_ up time_ p y .
graph_category fritz
Gebruik voor de overige plug-ins ook hun bestandsnamen, maar hernoem de extensie .py in _py. Sla de wijzigingen op en herstart Munin met sudo systemctl restart muninnode. Werk de plug-inconfiguratie van de Munin-server bij als root: