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.