Introduction
Le logiciel Munin permet de garder des statistiques de performance sur une longue période de temps. Ceci peut être pratique pour voir l'évolution du signal sans fil avec les autres relais (ex: voir l'évolution à travers les saisons), évaluer le "bruit" généré par les autres routeurs sans fil dans le voisinage, mesurer la quantité de données transférées, etc.
Munin est une application avec une partie client (munin-node) et une partie serveur (le serveur Munin). Le serveur Munin doit être installé sur une machine suffisamment performante et ayant un serveur web. Le client Munin est installé sur la "node" surveillée. À toutes les 5 minutes, le serveur se connecte à la node pour obtenir les différentes mesures.
Installation
Pour l'activer sur OpenWRT, on peut installer le paquet "muninlite". C'est une version très légère de munin-node (écrite en bash).
$ opkg update Downloading ... $ opkg install muninlite Installing xinetd (2.3.15-1) to root... Configuring xinetd. Installing muninlite (1.0.4-3) to root... Configuring muninlite.
Pour que le service Munin soit accessible par IPv6, il faut
ajouter une option flags = IPv6
dans le fichier
/etc/xinetd.d/munin
.
Puis activer et démarrer xinetd:
/etc/init.d/xinetd enable
/etc/init.d/xinetd start
Une fois installé, on doit activer la recherche de "plugins" en éditant le script /usr/sbin/munin-node
:
-PLUGINPATTERN=$(dirname $0)"/munin-node-plugin.d/*"
+PLUGINPATTERN="/etc/munin/plugins/*"
# Remove unwanted plugins from this list
-PLUGINS="cpu if_ if_err_ load memory processes netstat uptime interrupts irqstats"
+PLUGINS="cpu if_ if_err_ load memory processes netstat uptime interrupts irqstats plugindir_"
Connectivité Ad-Hoc
On peut ensuite télécharger et placer le script suivant dans le répertoire /etc/munin/plugins et le rendre exécutable: ?adhoc rssi.sh
mkdir -p /etc/munin/plugins
cd /etc/munin/plugins
wget http://wiki.reseaulibre.ca/documentation/munin/adhoc_rssi
chmod +x adhoc_rssi
opkg install wireless-tools
wget http://redmine.bidon.ca/projects/reseaulibre-scripts/repository/revisions/master/raw/wifi_cells_per_channel
chmod +x wifi_cells_per_channel
On peut vérifier le bon fonctionnement de Munin et le contenu de la liste des plugins disponibles:
$ telnet localhost 4949
# munin node at pinxo
list
cpu if_wlan0 if_eth0 if_br_lan if_err_wlan0 if_err_eth0 if_err_br_lan load memory processes uptime interrupts irqstats adhoc_rssi
fetch adhoc_rssi
signaldc:9f:db:00:13:79.value -55
signal00:27:22:72:cf:9f.value -39
.
quit
Snippet de firewall:
config rule
option name Allow-Munin-wan
option src wan
option dest_port 4949
option proto tcp
option target ACCEPT
Il reste ensuite à configurer un serveur munin qui va aller collecter ces statistiques. Ceci est un peu au delà d'un simple tutoriel comme ceci, mais il devrait normalement suffire de faire:
apt-get install munin
... sous Debian, et munin sera alors accessible sous http://localhost/munin. Il faudra corriger le fichier de config (/etc/munin/apache.conf
) apache pour le rendre public puis ajouter votre routeur à la configuration dans /etc/munin/munin.conf
, exemple:
[boulette]
address 172.16.0.2
Voir la documentation complète de munin pour les détails.
Quagga/Babeld
Le logiciel de routage Quagga possède une interface de contrôle qui rend le monitorage plus facile que si on utilisait le serveur Babeld standard. Par exemple, le script pour munin-node ci-dessous (tiré de https://dn42.net/trac/wiki/Statistics, voir ce site pour les instructions) permet de tracer le nombre de routes fournies par le réseau:
#!/bin/sh # # # Munin Plugin to show quagga babel routes # Standard Config Section Begin ## if [ "$1" = "autoconf" ]; then echo yes exit 0 fi if [ "$1" = "config" ]; then echo 'graph_title Quagga Babel Routes' echo 'graph_args --base 1000 -l 0' echo 'graph_scale yes' echo 'graph_vlabel Received routes via Babel' echo 'graph_category network' echo 'babelroutes.label Routes' echo 'graph_info Route information provided by quagga daemon via vtysh' exit 0 fi # Standard Config Section End #### # Measure Section Begin ########## data=$(vtysh -d babeld -c "show babel database"|grep installed|wc -l) if [ "$data" = "" ]; then echo babelroutes.value 0 else echo babelroutes.value $data fi # Measure Section ##########
Un exemple d'utilisation de ce script est disponible sur http://www.deuxpi.ca/munin/deuxpi.ca/mail.deuxpi.ca/quagga_babel.html.