Ceci est une ancienne révision du document !
~~CLOSETOC~~
Munin - Installation d'un outil d'analyse des ressources
munin collecte et analyse les ressources utilisées par les serveurs qu'il surveille. Dans le cadre du MCO, l'outil permet à l'administrateur de connaître l'état précis des ressources d'un serveur et leurs évolutions dans le temps.
- Référence : Munin
<note>Cette procédure a été réalisée et testée sur une VM debian 10 (serveur et client) et une VM Windows 10 (client).</note>
<note warning>Cette procédure nécessite des droits root. Faîtes donc attention à ce que vous faîtes.</note>
Prérequis
muninnécessite un serveurapache2correctement configuré. Pour cela, on met à jour les dépôtsAPT:
apt-get update
- On installe les paquets nécessaires :
apt-get install -y apache2 libcgi-fast-perl libapache2-mod-fcgid libwww-perl
- On active les modules
apache2:
a2enmod fcgid
Installation du serveur
- On commence par mettre le dépôt
APTà jour :
apt-get update
- On installe les paquets nécessaires :
apt-get install -y munin
Configuration
- On édite le fichier de configuration de
munin:
nano /etc/munin/munin.conf
- Au début du fichier :
- On décommente la ligne
dbdir. - On décommente la ligne
htmldiret on modifie sa valeur par/var/www/munin. - On décommente la ligne
logdir. - On décommente la ligne
rundir. - On décommente la ligne
tmpldir.
- Plus bas dans le document (on peut rechercher avec
CTRL+Wla sectiona simple host tree) :- On supprime la valeur entre
[]et on la remplace par leFQDNdu serveurmunin.
- On enregistre avec
CTRL+Oet on quitte avecCTRL+X. - On crée le dossier web de
munin:
mkdir -p /var/www/munin
- On change le propriétaire du dossier créé :
chown munin:munin /var/www/munin
- On crée un lien symbolique du fichier de configuration
/etc/munin/apache24.confdans le dossier/etc/apache2/conf-available/:
cd /etc/apache2/conf-available/ ln -s /etc/munin/apache24.conf ./munin.conf
- On modifie la configuration :
nano /etc/apache2/conf-available/munin.conf
- La configuration doit ressembler à ça :
# Munin configuration for apache2
#
# Apache can serve munin's files that are either statically generated
# (in a cron job) or generated on demand (via cgi).
# The relevant munin settings are "html_strategy" and "graph_strategy".
# The related apache settings can be adjusted at the end of this file.
#
# See /usr/share/doc/munin/README.Debian for details.
# ***** COMMON SETTINGS FOR ALL STRATEGIES *****
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
Alias /munin/static/ /var/www/munin/static/
<Directory /var/www/munin>
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
</Directory>
<Directory /usr/lib/munin/cgi>
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Directory>
# ***** SETTINGS FOR CGI/CRON STRATEGIES *****
# pick _one_ of the following lines depending on your "html_strategy"
# html_strategy: cron (default)
Alias /munin /var/www/munin
# html_strategy: cgi (requires the apache module "cgid" or "fcgid")
#ScriptAlias /munin /usr/lib/munin/cgi/munin-cgi-html
- On modifie le cron
/etc/cron.d/muninpour remplacer/var/cache/munin/wwwpar/var/www/munin. - On redémarre les services :
systemctl restart munin.service systemctl restart munin-node.service systemctl restart apache2.service
- En cas d'erreur de redémarrage du service Munin : Failed to restart munin.service: Unit munin.service is masked.
<note tip>Félicitations, vous devriez désormais avoir accès à votre serveur munin via l'adresse http://ip_du_serveur_munin/munin.</note>
Sécurisation
Dans le cas où munin devrait être accessible sur Internet et du fait des données sensibles qu'il présente, on peut rajouter une demande de mot de passe pour accéder au site. Pour cela :
- On modifie le fichier
/etc/apache2/conf-available/munin.confpour ajouter la directiveAllowOverride all. Le fichier ressemble du coup à ça :
# Munin configuration for apache2
#
# Apache can serve munin's files that are either statically generated
# (in a cron job) or generated on demand (via cgi).
# The relevant munin settings are "html_strategy" and "graph_strategy".
# The related apache settings can be adjusted at the end of this file.
#
# See /usr/share/doc/munin/README.Debian for details.
# ***** COMMON SETTINGS FOR ALL STRATEGIES *****
ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph
Alias /munin/static/ /var/www/munin/static/
<Directory /var/www/munin>
AllowOverride all
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
</Directory>
<Directory /usr/lib/munin/cgi>
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
<IfModule mod_fcgid.c>
SetHandler fcgid-script
</IfModule>
<IfModule !mod_fcgid.c>
SetHandler cgi-script
</IfModule>
</Directory>
# ***** SETTINGS FOR CGI/CRON STRATEGIES *****
# pick _one_ of the following lines depending on your "html_strategy"
# html_strategy: cron (default)
Alias /munin /var/www/munin
# html_strategy: cgi (requires the apache module "cgid" or "fcgid")
#ScriptAlias /munin /usr/lib/munin/cgi/munin-cgi-html
- On créé le fichier
/var/www/munin/.htaccess:
nano /var/www/munin/.htaccess
- On ajoute les directives suivantes :
AuthType Basic AuthName "Members Only" AuthUserFile /var/www/munin/htpasswd.users <limit GET PUT POST> require valid-user </limit>
- Après avoir enregistré le fichier, on lui donne les droits nécessaires :
chown www-data:www-data /var/www/munin/.htaccess chmod 400 /var/www/munin/.htaccess
- Il nous reste plus qu'à crée le fichiers de mots de passe :
htpasswd -c /var/www/munin/htpasswd.users muninadmin
- On renseigne le mot de passe correspondant à l'utilisateur
muninadmin. - On redémarre
apache2:
service apache2 restart
<note tip>Voilà, l'accès à munin est désormais protégé par un mot de passe.</note>
Installation d'un client sous Linux
- On commence par mettre à jour les dépôts
APT:
apt-get update
- On installe les paquets nécessaires :
apt-get install -y munin-node munin-plugins-extra
- Par défaut, tous les plugins utilisables sont activés. Pour avoir la liste complète des plugins et la raison de leur inactivité (le cas échéant), on peut exécuter la commande suivante :
munin-node-configure --suggest
- Pour activer un plugin, il suffit de créer un lien symbolique entre son dépôt
/usr/share/munin/plugins/et le dossier actif/etc/munin/plugins/. Par exemple, pour le pluginacpi:
cd /etc/munin/plugins/ ln -s /usr/share/munin/plugins/acpi .
- Une fois les plugins souhaités activés, il faut autoriser le serveur à récupérer les informations. Pour cela, on édite le fichier
/etc/munin/munin-node.conf:
nano /etc/munin/munin-node.conf
- On ajoute l'adresse de notre serveur maître sous la forme d'une expression régulière (
regex). Par exemple, pour un serveur dont l'adresse IP est192.168.20.54, la ligne à ajouter sera :
allow ^192\.168\.20\.54$
- Une fois la modification faîte et enregistrée, on redémarre le service :
service munin-node restart
- De retour sur le serveur, on va dans le dossier
/etc/munin/munin-conf.d:
cd /etc/munin/munin-conf.d
- Ici, on peut créer des groupes pour catégoriser les postes clients, par exemple ; bdd, web, prod, etc…
- Donc, si il n'existe pas encore, on crée le fichier de groupe pour notre client, disons qu'il s'agit d'un serveur de base de données
MySQL, on créera donc le fichierbdd.conf:
touch bdd.conf
- On peut alors éditer le fichier de configuration correspondant au groupe choisi pour le client (ici, bdd.conf) :
nano bdd.conf
- On ajoute les informations du client. Par exemple pour la machine
srv-mysql, dans le groupebddet dont l'adresse IP est192.168.20.55, on ajoutera :
[srv-mysql.bdd] address 192.168.20.55 use_node_name yes
- Il ne nous reste plus qu'à relancer le service :
systemctl restart apache2.service
<note important>munin collecte les données toutes les 5 min par défaut. C'est le temps qu'il vous faudra attendre pour voir apparaître le nouveau client sur la page web.</note>
Installation d'un client sous Windows
- On commence par installer le service SNMP :
Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"
- Le service installé, on ouvre la fenêtre des services
services.mscet on éditeService SNMP.
<note important>Si les onglets Agent, Interruptions et/ou Sécurité n'apparaissent pas, redémarrer le service, voire le client Windows.</note>
- Dans l'onglet
Agent, on coche tous les services. - Dans l'onglet
Interruptions, on ajoutepublicau nom de la communauté et on ajoute l'adresse du serveur Munin dans les destinations des interruptions. - Dans l'onglet
Sécurité, on ajoute la communautépublicen modeLECTURE CREATIONet on activeAccepter les paquets SNMP provenant de n'importe quel hôte.
- On ferme la fenêtre en cliquant sur
OKet on redémarre le service. - On retourne sur le serveur Munin. Là, on installe les modules SNMP, si besoin :
apt update && apt install -y libnet-snmp-perl
- On vérifie les modules SNMP disponibles pour le client Windows (
windows.shyrka.sysdans l'exemple) :
<note important>Si votre réseau n'a pas de serveur DNS (Workgroup par exemple), n'hésitez pas à mettre le nom du client dans le fichier /etc/hosts.</note>
munin-node-configure -snmp windows.shyrka.sys
- Ce qui renvoie dans la console :
Plugin | Used | Suggestions ------ | ---- | ----------- snmp__cpuload | no | yes (+windows.shyrka.sys) snmp__df | no | yes (+windows.shyrka.sys) snmp__df_ram | no | yes (+windows.shyrka.sys) snmp__fc_if_ | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__fc_if_err_ | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__if_ | no | yes (+windows.shyrka.sys/22 +windows.shyrka.sys/25) snmp__if_err_ | no | yes (+windows.shyrka.sys/22 +windows.shyrka.sys/25) snmp__if_multi | no | yes (+windows.shyrka.sys) snmp__load | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__memory | no | yes (+windows.shyrka.sys) snmp__netapp_diskusage_ | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__netapp_inodeusage_ | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__netstat | no | yes (+windows.shyrka.sys) snmp__print_pages | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__print_supplies | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__processes | no | yes (+windows.shyrka.sys) snmp__rdp_users | no | yes (+windows.shyrka.sys) snmp__sensors_fsc_bx_fan | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__sensors_fsc_bx_temp | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__sensors_fsc_fan | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__sensors_fsc_temp | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__sensors_mbm_fan | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__sensors_mbm_temp | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__sensors_mbm_volt | no | no [[[ plugin has neither autoconf not suggest support ]]] snmp__swap | no | yes (+windows.shyrka.sys) snmp__uptime | no | yes (+windows.shyrka.sys) snmp__users | no | yes (+windows.shyrka.sys) snmp__winload | no | yes (+windows.shyrka.sys) snmp__winmem | no | yes (+windows.shyrka.sys)
- Dans la colonne
Suggestions, les modules pour lequels des données sont disponibles apparaissent avec la mentionyes. Pour activer un module, il suffit de créer un lien du module choisi en y ajouter le nom (pour ceux qui porte la mention+windows.shyrka.sys) et l'indice (pour ceux qui portent la mention+windows.shyrka.sys/xx). Par exemple, poursnmp_cpuload:
ln -s /usr/share/munin/plugins/snmp__cpuload /etc/munin/plugins/snmp_windows.shyrka.sys_cpuload
- Et pour
snmp_if_:
ln -s /usr/share/munin/plugins/snmp__if_ /etc/munin/plugins/snmp_windows.shyrka.sys_if_22 ln -s /usr/share/munin/plugins/snmp__if_ /etc/munin/plugins/snmp_windows.shyrka.sys_if_25
- Une fois les modules activés, on ajoute la machine dans un groupe de Munin (groupes crées de la même manière que pour les clients Linux). Les informations à ajouter au groupe sont le nom d'hôte tel qu'ajouté dans les lien snmp, l'adresse 127.0.0.1 (c'est le serveur qui fait la requête SNMP) et non pour l'utilisation du nom de node (Munin utilisera le nom indiqué dans le paramétrages machine, ici
windwos.shyrka.syset non celui de la machine portant le node, à savoir le serveur Munin). Ce qui donne :
[windows.shyrka.sys] address 127.0.0.1 use_node_name no
- Il ne reste plus qu'à redémarrer les services
munin-nodeetapache2:
service munin-node restart service apache2 restart
Erreurs et Corrections
Failed to restart munin.service: Unit munin.service is masked.
- Vérifier si le fichier de service pointe sur
/dev/null:
ls -l /lib/systemd/system/munin.service # Retour lrwxrwxrwx 1 root root 9 mars 3 2017 munin.service -> /dev/null
- Dans ce cas, supprimez le fichier :
rm -f /lib/systemd/system/munin.service
- Relancez le daemon :
systemctl daemon-reload
- Vérifier le service :
systemctl status munin.service
# Retour correct :
● munin.service - LSB: Create /var/run/munin on boot
Loaded: loaded (/etc/init.d/munin; generated; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)
- Si le retour est correct, relancer le service :
systemctl start munin.service
systemctl status munin.service
# Retour
● munin.service - LSB: Create /var/run/munin on boot
Loaded: loaded (/etc/init.d/munin; generated; vendor preset: enabled)
Active: active (exited) since Mon 2020-04-06 10:29:03 CEST; 6s ago
Docs: man:systemd-sysv-generator(8)
Process: 6678 ExecStart=/etc/init.d/munin start (code=exited, status=0/SUCCESS)
avril 06 10:29:03 mlb-monitor-2 systemd[1]: Starting LSB: Create /var/run/munin on boot...
avril 06 10:29:03 mlb-monitor-2 systemd[1]: Started LSB: Create /var/run/munin on boot.
— Nicolas THOREZ 2020/02/21 14:23



Discussion