Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / Supervision / Installer un nœud Munin sur Debian

Installer un nœud Munin sur Debian

Par Pierre-Yves Landuré Dernière modification 08/11/2017 14:49

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:

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