Installer un nœud Munin sur Debian
Munin est un outil générant des graphiques d'utilisation des ressources système et réseau au fil du temps. Il est utile pour surveiller la charge globale d'un serveur en fonction des heures de la journées, et des jours du mois. Un nœud Munin est un logiciel fournissant des données statistiques à Munin. Il doit être installé sur la machine cliente pour qu'elle puisse être interrogée par le serveur Munin. Ce guide vous aide à mettre en place un nœud Munin sur Debian.
Ce guide est testé sur:
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
Pré-requis
Ce guide nécessite:
- un serveur Munin (local ou distant), comme décrit par Installer un serveur Munin sur Debian.
Paramètres
Important: Identifiez-vous sur l'hôte à surveiller avec Munin.
Renseignez l'adresse IP du serveur Munin:
MUNIN_IP="127.0.0.1"
Renseignez le nom de l'interface réseau connectée au serveur Munin:
NET_DEV="eth0"
Installation
Détectez le nom de l'hôte:
FQDN_HOST="$(command hostname --fqdn)"
Détectez l'adresse IP de l'hôte local:
if [ "${MUNIN_IP}" = "127.0.0.1" ]; then
NET_IP="127.0.0.1"
else
NET_IP="$(command ifconfig ${NET_DEV} \
| command grep "inet " \
| command sed -e 's/^.*inet [^:]*:\([^ ]*\) .*$/\1/')"
fi
Préparation de l'environnement
Installez le nœud de supervision:
command apt-get install munin-node
Autorisez le serveur Munin à accéder au nœud:
if [ "${MUNIN_IP}" != "127.0.0.1" ]; then
command echo "
# Allow access from ${MUNIN_IP}
allow ^$(command echo "${MUNIN_IP}" | command sed -e 's/\./\\./g')\$" \
>> '/etc/munin/munin-node.conf'
fi
Limitez l'écoute du nœud Munin à l'IP utilisée pour la communication avec le serveur Munin:
command sed -i \
-e 's/^host[\t ].*/#&/g' \
-e "s/#[\t ]*\(host[\t ]*127.0.0.1\)/host ${NET_IP}/g" \
'/etc/munin/munin-node.conf'
Augmentez le timeout du nœud pour limiter les erreurs lorsque la charge serveur est haute:
echo "# raise node timeout
timeout 120" \
>> '/etc/munin/munin-node.conf'
Rechargez la configuration du nœud:
/etc/init.d/munin-node restart
Configurez Munin pour surveiller l'hôte et rechargez la configuration (le mot de passe demandé est celui du compte root du serveur Munin):
if [ "${MUNIN_IP}" != "127.0.0.1" ]; then
ssh root@${MUNIN_IP} "echo \"[${FQDN_HOST}]
address ${NET_IP}
use_node_name yes
\" > '/etc/munin/munin-conf.d/${FQDN_HOST}.conf';
/etc/init.d/munin restart"
else
echo "[${FQDN_HOST}]
address 127.0.0.1
use_node_name yes" > "/etc/munin/munin-conf.d/${FQDN_HOST}.conf"
/etc/init.d/munin restart
fi
Configuration des plugins
Configuration automatique
La commande suivante auto-détecte quels sont les plugins disponibles pour l'hôte, et indique comment les installer:
command munin-node-configure --shell --suggest
Désactivez le plugin iostat s'il ne détecte aucune valeur (dans une machine virtuelle Xen par exemple):
if [ -e '/etc/munin/plugins/iostat' -a -z "$(command munin-run iostat)" ]; then
command rm '/etc/munin/plugins/iostat'
/etc/init.d/munin-node restart
fi
Attention: seul les plugins présents dans les paquets Debian sont installés. Des plugins supplémentaires sont disponibles sur Internet.
Supervision d'Apache 2
Si un serveur Apache 2 est présent sur l'hôte, configurez la supervision par Munin.
Installez les bibliothèques Perl nécessaire au plugin:
if [ -x '/etc/init.d/apache2' ]; then
command apt-get install libwww-perl liblwp-useragent-determined-perl
fi
Activez les modules status et info du serveur, et recharger la configuration:
if [ -x '/etc/init.d/apache2' ]; then
command a2enmod status
/etc/init.d/apache2 force-reload
fi
Assurez-vous que l'accès au statuts du serveur HTTP est possible:
if [ -x '/etc/init.d/apache2' -a ! -e '/etc/apache2/sites-enabled/000-default' ]; then
command ln -s '../sites-available/default' '/etc/apache2/sites-enabled/000-default'
/etc/init.d/apache2 reload
fi
Activez les modules nécessaires:
if [ -x '/etc/init.d/apache2' ]; then
command ln -s '/usr/share/munin/plugins/apache_accesses' '/etc/munin/plugins'
command ln -s '/usr/share/munin/plugins/apache_processes' '/etc/munin/plugins'
command ln -s '/usr/share/munin/plugins/apache_volume' '/etc/munin/plugins'
fi
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de PHP APC
Si PHP APC est présent sur l'hôte, configurez la surveillance par Munin:
Installez le plugin:
if [ -e '/etc/php5/conf.d/apc.ini' -o -e '/etc/php5/conf.d/20-apc.ini' ]; then
command wget 'http:
//munin-php-apc
.googlecode.com
/svn/trunk/php_apc/php_apc_
' \
--quiet --output-document='/usr/share/munin/plugins/php_apc_'
command chmod +x '/usr/share/munin/plugins/php_apc_'
for MODE in usage hit_miss purge fragmentation files rates; do
command ln -s "/usr/share/munin/plugins/php_apc_" "/etc/munin/plugins/php_apc_${MODE}"
done
fi
Déterminez le chemin des données du nœud Munin:
command test -d '/var/lib/munin' && DATA_PATH='/var/lib/munin'
command test -d '/var/lib/munin-node' && DATA_PATH='/var/lib/munin-node'
Téléchargez le script PHP d'affichage des informations APC:
if [ -e '/etc/php5/conf.d/apc.ini' -o -e '/etc/php5/conf.d/20-apc.ini' ]; then
command wget 'http://munin-php-apc.googlecode.com/svn/trunk/php_apc/apc_info.php' \
--output-document="${DATA_PATH}/apc_info.php"
fi
Configurez la page de statut dans Apache 2:
if [ \( -e '/etc/php5/conf.d/apc.ini' -o -e '/etc/php5/conf.d/20-apc.ini' \) -a -d '/etc/apache2/conf.d' ]; then
echo "
Alias /apc-info ${DATA_PATH}/apc_info.php
<Location /apc-info>
Order deny,allow
Deny from all
Allow from 127.0.0.1 ::1
</Location>" \
> '/etc/apache2/conf.d/apc-info'
fi
Rechargez la configuration d'Apache 2:
if [ -e '/etc/apache2/conf.d/apc-info' ]; then
/etc/init.d/apache2 reload
fi
Configurez le plugin:
echo "[php_apc_*]
user root
env.url http://localhost/apc-info?auto" \
> '/etc/munin/plugin-conf.d/php_apc_'
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de PHP FPM
Si le serveur utilise PHP FPM dont l'installation est décrite par Installer PHP-FPM sur Debian (notamment l'ajout de /php-fpm-status), configurez la supervision par Munin:
Installez les plugin:
if [ -e '/etc/init.d/php5-fpm' ]; then
for MODE in average connections memory processes status; do
command wget "https://raw.github.com/tjstein/php5-fpm-munin-plugins/master/phpfpm_${MODE}" \
--no-check-certificate --quiet --output-document="/etc/munin/plugins/phpfpm_${MODE}"
chmod +x "/etc/munin/plugins/phpfpm_${MODE}"
done
fi
Configurez les plugins:
echo "[phpfpm_*]
user root
env.url http://localhost/php-fpm-status
env.phpbin php-fpm" \
> '/etc/munin/plugin-conf.d/phpfpm_'
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de Phusion Passenger
Si le serveur utilise le module Phusion Passenger d'Apache 2, configurez la supervision par Munin.
Installez les logiciels nécessaires:
if [ -x '/usr/bin/passenger-status' -o -x '/usr/sbin/passenger-status' ]; then
command apt-get install sudo
fi
Installez les plugin:
if [ -x '/usr/bin/passenger-status' -o -x '/usr/sbin/passenger-status' ]; then
command wget "https://raw.github.com/munin-monitoring/contrib/master/plugins/passenger/passenger_status" \
--no-check-certificate --quiet --output-document="/usr/share/munin/plugins/passenger_status"
chmod +x "/usr/share/munin/plugins/passenger_status"
command wget "https://raw.github.com/sosedoff/munin-plugins/master/passenger/passenger_memory_stats" \
--no-check-certificate --quiet --output-document="/usr/share/munin/plugins/passenger_memory_stats"
chmod +x "/usr/share/munin/plugins/passenger_memory_stats"
command ln -s '/usr/share/munin/plugins/passenger_status' '/etc/munin/plugins'
command ln -s '/usr/share/munin/plugins/passenger_memory_stats' '/etc/munin/plugins'
fi
Configurez les plugins:
echo "[passenger_status]
user root" \
> '/etc/munin/plugin-conf.d/passenger_status'
echo "[passenger_memory_stats]
user root
env.graph_category passenger
env.passenger_memory_stats $(command which 'passenger-memory-stats')" \
> '/etc/munin/plugin-conf.d/passenger_memory_stats'
Rechargez la configuration:
/etc/init.d/munin-node restart
Remarque: Pour grapher des applications rails, reportez-vous à Munin-Rails-Plugins (en) par Dan Sosedoff (en).
Supervision de fail2ban
Si fail2ban est présent sur l'hôte, configurez la supervision par Munin:
if [ -x '/etc/init.d/fail2ban' ]; then
command ln -s '/usr/share/munin/plugins/fail2ban' '/etc/munin/plugins'
fi
Corrigez le script pour que les noms de valeur graphées par Munin ne contiennent pas de "-" (le "-" déclenche la non détection des valeurs fournies par le plugins):
if [ -e '/etc/munin/plugins/fail2ban' \
-a -z "$(command grep '\[^0-9A-Za-z\]' /etc/munin/plugins/fail2ban)" ]; then
command sed -i -e 's|$jail|${jail//[^0-9A-Za-z]/_}|' '/etc/munin/plugins/fail2ban'
fi
Configurez le plugin fail2ban:
echo "[fail2ban]
user root" \
> '/etc/munin/plugin-conf.d/fail2ban'
Rechargez la configuration de Munin:
/etc/init.d/munin-node restart
Supervision de MySQL
Si un serveur MySQL est présent sur l'hôte, configurez la supervision par Munin.
Installez les logiciels nécessaires:
if [ -x '/etc/init.d/mysql' ]; then
command apt-get install libcache-cache-perl libipc-sharelite-perl
fi
Activez les plugins nécessaires:
if [ -x '/etc/init.d/mysql' ]; then
for MODE in $(/usr/share/munin/plugins/mysql_ suggest); do
command ln -s '/usr/share/munin/plugins/mysql_' "/etc/munin/plugins/mysql_${MODE}"
done
fi
Si votre serveur MySQL n'utilise pas la réplication, supprimez le plugin concerné:
test -e 'etc/munin/plugins/mysql_replication' && rm '/etc/munin/plugins/mysql_replication'
Rechargez la configuration de Munin:
/etc/init.d/munin-node restart
Supervision de PostgreSQL
Si un serveur PostgreSQL est présent sur l'hôte, configurez la supervision par Munin:
Installez les logiciels nécessaires:
if [ -x '/etc/init.d/postgresql' ]; then
command apt-get install libdbd-pg-perl
fi
Activez les plugins nécessaires:
if [ -x '/etc/init.d/postgresql' ]; then
for PLUGIN in $(command find '/usr/share/munin/plugins' -type f -name 'postgres_*' | command grep -v '_$'); do
command ln -s "${PLUGIN}" "/etc/munin/plugins/$(command basename ${PLUGIN})"
done
for PLUGIN in $(command find '/usr/share/munin/plugins' -type f -name 'postgres_*' | command grep '_$'); do
command ln -s "${PLUGIN}" "/etc/munin/plugins/$(command basename ${PLUGIN}ALL)"
done
fi
Configurez les plugins:
echo "[postgres_*]
user postgres" \
> '/etc/munin/plugin-conf.d/postgres_'
Rechargez la configuration de Munin:
/etc/init.d/munin-node restart
Supervision de Memcached
Si Memcached est installé sur l'hôte, installez le plugin:
if [ -x '/etc/init.d/memcached' ]; then
command wget 'https://raw.github.com/munin-monitoring/contrib/master/plugins/memcached/memcached_multi_' \
--no-check-certificate --quiet --output-document='/usr/share/munin/plugins/memcached_multi_'
command chmod +x '/usr/share/munin/plugins/memcached_multi_'
fi
Activez le plugin:
if [ -x '/etc/init.d/memcached' ]; then
for MODE in bytes commands conns evictions items memory; do
command ln -s '/usr/share/munin/plugins/memcached_multi_' "/etc/munin/plugins/memcached_multi_${MODE}"
done
fi
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de Bind 9
Si un serveur Bind 9 est présent sur l'hôte, configurez la supervision par Munin.
Assurez-vous que le fichier query.log est présent. Sa configuration est décrite dans la section Journaux du guide Configurer un serveur DNS Bind sur Debian.
Activez les plugins de Munin:
if [ -x '/etc/init.d/bind9' ]; then
command ln -s '/usr/share/munin/plugins/bind9' '/etc/munin/plugins'
command ln -s '/usr/share/munin/plugins/bind9_rndc' '/etc/munin/plugins'
fi
Configurez le plugin bind9:
echo "[bind9]
user root
env.logfile /var/log/named/query.log" \
> '/etc/munin/plugin-conf.d/bind9'
Déterminez le chemin des données du nœud Munin:
command test -d '/var/lib/munin' && DATA_PATH='/var/lib/munin'
command test -d '/var/lib/munin-node' && DATA_PATH='/var/lib/munin-node'
Créez le fichier d'état du plugin:
command touch "${DATA_PATH}/plugin-state/bind9.state"
command chown nobody:munin "${DATA_PATH}/plugin-state/bind9.state"
Configurez le plugin bind9_rndc:
echo "[bind9_rndc]
user root
env.querystats /var/cache/bind/named.stats" \
> '/etc/munin/plugin-conf.d/bind9_rndc'
Initialisez le fichier de statistiques:
command rndc stats
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de Cyrus
Si un serveur IMAP Cyrus est présent sur l'hôte, configurez la supervision par Munin.
Installez le plugin:
command wget "https://trac.bawue.org/munin/browser/cyrus-imapd?format=txt" \
--quiet --no-check-certificate --output-document="/usr/share/munin/plugins/cyrus-imapd"
command chmod +x "/usr/share/munin/plugins/cyrus-imapd"
Activez le plugin:
if [ -x '/usr/sbin/cyrus' ]; then
command ln -s '/usr/share/munin/plugins/cyrus-imapd' "/etc/munin/plugins/cyrus-imapd"
fi
Configurez le plugin:
echo "[cyrus-imapd]
user root" \
> '/etc/munin/plugin-conf.d/cyrus-imapd'
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision d'Amavis
Si Amavis est présent sur l'hôte, installez les logiciels nécessaires:
if [ -x '/etc/init.d/amavis' ]; then
command apt-get install logtail
fi
Activez le plugin:
if [ -x '/etc/init.d/amavis' ]; then
command ln -s '/usr/share/munin/plugins/amavis' '/etc/munin/plugins'
fi
Configurez le plugin:
command sed -i -e 's/mail\.info/mail.log/' '/etc/munin/plugin-conf.d/munin-node'
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de vsFTPd
Si vsFTPd est présent sur l'hôte, installez les logiciels nécessaires:
if [ -x '/etc/init.d/vsftpd' ]; then
command apt-get install logtail
fi
Installez le plugin:
if [ -x '/etc/init.d/vsftpd' ]; then
command wget 'https://raw.github.com/munin-monitoring/contrib/master/plugins/ftp/vsftpd-rel' \
--no-check-certificate --quiet --output-document='/etc/munin/plugins/vsftpd-rel'
command chmod +x '/etc/munin/plugins/vsftpd-rel'
fi
Configurez le plugin:
echo "[vsftpd-rel]
user root" \
> '/etc/munin/plugin-conf.d/vsftpd-rel'
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision du cache Varnish
Si un serveur de cache Varnish est présent sur l'hôte, configurez la supervision:
Installez les logiciels nécessaires:
command apt-get install libxml-parser-perl
Activez les plugins nécessaires:
if [ -x '/etc/init.d/varnish' ]; then
for MODE in $(/usr/share/munin/plugins/varnish_ suggest); do
test -e "/etc/munin/plugins/varnish_${MODE}" || command ln -s '/usr/share/munin/plugins/varnish_' "/etc/munin/plugins/varnish_${MODE}"
done
fi
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de rTorrent
Si rTorrent est présent sur l'hôte, installez les logiciels nécessaires:
if [ -x '/etc/init.d/vsftpd' ]; then
command apt-get install logtail
fi
Installez les plugins:
if [ -x '/etc/init.d/rtorrent' ]; then
for MODE in mem peers spdd vol; do
command wget "https://raw.github.com/munin-monitoring/contrib/master/plugins/rtorrent/rtom_${MODE}" \
--output-document="/etc/munin/plugins/rtom_${MODE}"
command chmod +x "/etc/munin/plugins/rtom_${MODE}"
done
fi
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de OpenVPN
Si OpenVPN est présent sur l'hôte, installez le plugin:
if [ -x '/etc/init.d/openvpn' ]; then
command wget 'https://raw.github.com/biapy/munin-openvpn/master/openvpn_usercount' \
--no-check-certificate --quiet --output-document='/usr/share/munin/plugins/openvpn_usercount'
command chmod +x '/usr/share/munin/plugins/openvpn_usercount'
command wget 'https://raw.github.com/biapy/munin-openvpn/master/openvpn_usertransfer' \
--no-check-certificate --quiet --output-document='/usr/share/munin/plugins/openvpn_usertransfer'
command chmod +x '/usr/share/munin/plugins/openvpn_usertransfer'
fi
Activez le plugin pour vos réseaux VPN, et configurez le (script valide pour les installations réalisées avec le guide Installer et configurer OpenVPN sur Debian):
command find '/var/log/openvpn' -mindepth 1 -type d | while read LINE; do
for MODE in usertransfer usercount; do
NETWORK_NAME="$(command basename "${LINE}")"
command ln -s "/usr/share/munin/plugins/openvpn_${MODE}" "/etc/munin/plugins/openvpn_${MODE}_${NETWORK_NAME}"
echo "[openvpn_${MODE}_${NETWORK_NAME}]
user root
env.statusfile /var/log/openvpn/${NETWORK_NAME}/openvpn-status.log" \
> "/etc/munin/plugin-conf.d/openvpn_${MODE}_${NETWORK_NAME}"
done
done
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de Nagios
Si Nagios est installé sur l'hôte, installez le plugin:
if [ -x '/etc/init.d/nagios' ]; then
command wget 'https://raw.github.com/munin-monitoring/contrib/master/plugins/nagios/nagios_multi_' \
--no-check-certificate --quiet --output-document='/usr/share/munin/plugins/nagios_multi_'
command chmod +x '/usr/share/munin/plugins/nagios_multi_'
fi
Activez le plugin:
if [ -x '/etc/init.d/nagios' ]; then
for MODE in checks hosts services; do
command ln -s '/usr/share/munin/plugins/nagios_multi_' "/etc/munin/plugins/nagios_multi_${MODE}"
done
fi
Configurez le plugin:
command echo "[nagios_multi_*]
user root
env.binary $(command which nagiostats)" \
> '/etc/munin/plugin-conf.d/nagios_multi_'
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de Xen
Pour superviser un hyperviseur Xen, installez le plugin:
if [ -x '/usr/sbin/xentop' ]; then
command wget 'https://raw.github.com/munin-monitoring/contrib/master/plugins/virtualization/xen-multi' \
--no-check-certificate --quiet --output-document='/usr/share/munin/plugins/xen-multi'
command chmod +x '/usr/share/munin/plugins/xen-multi'
fi
Activez le plugin:
if [ -x '/usr/sbin/xentop' ]; then
command ln -s '/usr/share/munin/plugins/xen-multi' "/etc/munin/plugins/xen-multi"
fi
Configurez le plugin:
command echo "[xen-multi]
user root" \
> '/etc/munin/plugin-conf.d/xen-multi'
Rechargez la configuration:
/etc/init.d/munin-node restart
Supervision de Plone
La supervision d'un serveur Plone nécessite la modification du buildout. La procédure est décrite dans l'article Monitoring avec Munin, dans la documentation pour intégrateurs de Plone.
Supervision d'autres services et outils
De nombreux plugins Munin sont disponibles dans le dépôt GitHub de Munin.
Résolution des problèmes
Journaux
Affichez les éventuelles erreurs générés par le nœud munin avec:
command tail -n 50 -f '/var/log/munin/munin-node.log'
Tester un plugin
L'outil munin-run permet de tester les résultats d'un plugin. Par exemple, pour le plugin "memory":
Affichez la configuration:
command munin-run memory config
Affichez les valeurs:
command munin-run memory
Exécuter en mode débogage:
command munin-run --debug --pidebug memory
Remerciements
- Merci aux développeurs de Munin (en).
- Merci à GitHub (en) pour l'hébergement des fichiers utilisés par ce guide.
- Merci à Andreas Thienemann pour le plugin Munin cyrus-imapd (en).
- Merci à Debian/Ubuntu Tips & Tricks (en) pour Munin/Bind9 Plugin (en).
- Merci à Kevin Deldycke (en) pour PHP APC on Debian Squeeze with Munin monitoring (en).
- Merci aux développeurs de munin-php-apc (en).
- Merci à T. J. Stein (en) pour les plugins PHP-FPM pour Munin (en).