Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Munin - Installation d'un outil d'analyse des ressources ====== <label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/02/21 14:23// ''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 : [[http://munin-monitoring.org/|Munin]] <callout type="info" title="Environnement" icon="true">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).</callout> <callout type="danger" title="Droits" icon="true">Cette procédure nécessite des droits ''root''. Faîtes donc attention à ce que vous faîtes.</callout> ===== Prérequis ===== * ''munin'' nécessite un serveur ''apache2'' correctement configuré. Pour cela, on met à jour les dépôts ''APT'' : <sxh bash>apt-get update</sxh> * On installe les paquets nécessaires : <sxh bash>apt-get install -y apache2 libcgi-fast-perl libapache2-mod-fcgid libwww-perl</sxh> * On active les modules ''apache2'' : <sxh bash>a2enmod fcgid</sxh> ===== Installation du serveur ===== * On commence par mettre le dépôt ''APT'' à jour : <sxh bash>apt-get update</sxh> * On installe les paquets nécessaires : <sxh bash>apt-get install -y munin</sxh> ==== Configuration ==== * On édite le fichier de configuration de ''munin'' : <sxh bash>nano /etc/munin/munin.conf</sxh> * Au début du fichier : * On décommente la ligne ''dbdir''. * On décommente la ligne ''htmldir'' et 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+W'' la section ''a simple host tree'') : * On supprime la valeur entre ''[]'' et on la remplace par le ''FQDN'' du serveur ''munin''. * On enregistre avec ''CTRL+O'' et on quitte avec ''CTRL+X''. * On crée le dossier web de ''munin'' : <sxh bash>mkdir -p /var/www/munin</sxh> * On change le propriétaire du dossier créé : <sxh bash>chown munin:munin /var/www/munin</sxh> * On crée un lien symbolique du fichier de configuration ''/etc/munin/apache24.conf'' dans le dossier ''/etc/apache2/conf-available/'' : <sxh bash>cd /etc/apache2/conf-available/ ln -s /etc/munin/apache24.conf ./munin.conf</sxh> * On modifie la configuration : <sxh bash>nano /etc/apache2/conf-available/munin.conf</sxh> * La configuration doit ressembler à ça : <sxh bash># 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 </sxh> * On modifie le cron ''/etc/cron.d/munin'' pour remplacer ''/var/cache/munin/www'' par ''/var/www/munin''. * On redémarre les services : <sxh bash>systemctl restart munin.service systemctl restart munin-node.service systemctl restart apache2.service</sxh> * En cas d'erreur de redémarrage du service Munin : [[linux_munin#failed_to_restart_muninserviceunit_muninservice_is_masked|Failed to restart munin.service: Unit munin.service is masked.]] <callout type="success" title="Installation" icon="true">Félicitations, vous devriez désormais avoir accès à votre serveur ''munin'' via l'adresse http://ip_du_serveur_munin/munin.</callout> ==== 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.conf'' pour ajouter la directive ''AllowOverride all''. Le fichier ressemble du coup à ça : <sxh bash; highlight: 17># 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</sxh> * On créé le fichier ''/var/www/munin/.htaccess'' : <sxh bash>nano /var/www/munin/.htaccess</sxh> * On ajoute les directives suivantes : <sxh>AuthType Basic AuthName "Members Only" AuthUserFile /var/www/munin/htpasswd.users <limit GET PUT POST> require valid-user </limit></sxh> * Après avoir enregistré le fichier, on lui donne les droits nécessaires : <sxh bash>chown www-data:www-data /var/www/munin/.htaccess chmod 400 /var/www/munin/.htaccess</sxh> * Il nous reste plus qu'à crée le fichiers de mots de passe : <sxh bash>htpasswd -c /var/www/munin/htpasswd.users muninadmin</sxh> * On renseigne le mot de passe correspondant à l'utilisateur ''muninadmin''. * On redémarre ''apache2'' : <sxh bash>service apache2 restart</sxh> <callout type="success" title="Sécurité" icon="true">Voilà, l'accès à ''munin'' est désormais protégé par un mot de passe.</callout> ===== Installation d'un client sous Linux ===== * On commence par mettre à jour les dépôts ''APT'' : <sxh bash>apt-get update</sxh> * On installe les paquets nécessaires : <sxh bash>apt-get install -y munin-node munin-plugins-extra</sxh> * 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 : <sxh bash>munin-node-configure --suggest</sxh> * 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 plugin ''acpi'' : <sxh bash>cd /etc/munin/plugins/ ln -s /usr/share/munin/plugins/acpi .</sxh> <callout type="tip" title="Astuce" icon="true">Vous pouvez activer tous les modules conseillés avec la commande : <sxh bash>munin-node-configure --suggest --shell | sh</sxh></callout> * 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'' : <sxh bash>nano /etc/munin/munin-node.conf</sxh> * 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 est ''192.168.20.54'', la ligne à ajouter sera : <sxh bash>allow ^192\.168\.20\.54$</sxh> * Une fois la modification faîte et enregistrée, on redémarre le service : <sxh bash>service munin-node restart</sxh> * De retour sur le serveur, on va dans le dossier ''/etc/munin/munin-conf.d'' : <sxh bash>cd /etc/munin/munin-conf.d</sxh> * 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 fichier ''bdd.conf'' : <sxh bash>touch bdd.conf</sxh> * On peut alors éditer le fichier de configuration correspondant au groupe choisi pour le client (ici, bdd.conf) : <sxh bash>nano bdd.conf</sxh> * On ajoute les informations du client. Par exemple pour la machine ''srv-mysql'', dans le groupe ''bdd'' et dont l'adresse IP est ''192.168.20.55'', on ajoutera : <sxh bash>[srv-mysql.bdd] address 192.168.20.55 use_node_name yes</sxh> * Il ne nous reste plus qu'à relancer le service : <sxh bash>systemctl restart apache2.service</sxh> <callout type="info" title="Collecte de données" icon="true">''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.</callout> ===== Installation d'un client sous Windows ===== * On commence par installer le service SNMP : <sxh powershell>Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"</sxh> * Le service installé, on ouvre la fenêtre des services ''services.msc'' et on édite ''Service SNMP''. <callout type="warning" title="Paramétrages" icon="true">Si les onglets ''Agent'', ''Interruptions'' et/ou ''Sécurité'' n'apparaissent pas, redémarrer le service, voire le client Windows.</callout> * Dans l'onglet ''Agent'', on coche tous les services. * Dans l'onglet ''Interruptions'', on ajoute ''public'' au 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é ''public'' en mode ''LECTURE CREATION'' et on active ''Accepter les paquets SNMP provenant de n'importe quel hôte''. <WRAP group> <WRAP third column> <image shape="thumbnail">{{ :linux:munin:munin_001.png |}}</image> </WRAP> <WRAP third column> <image shape="thumbnail">{{ :linux:munin:munin_002.png |}}</image> </WRAP> <WRAP third column> <image shape="thumbnail">{{ :linux:munin:munin_003.png |}}</image> </WRAP> </WRAP> * On ferme la fenêtre en cliquant sur ''OK'' et on redémarre le service. * On retourne sur le serveur Munin. Là, on installe les modules SNMP, si besoin : <sxh bash>apt update && apt install -y libnet-snmp-perl</sxh> * On vérifie les modules SNMP disponibles pour le client Windows (''windows.shyrka.sys'' dans l'exemple) : <callout type="warning" title="Résolution de nom d'hôte" icon="true">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''.</callout> <sxh bash> munin-node-configure -snmp windows.shyrka.sys</sxh> * Ce qui renvoie dans la console : <sxh>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) </sxh> * Dans la colonne ''Suggestions'', les modules pour lequels des données sont disponibles apparaissent avec la mention ''yes''. 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, pour ''snmp_cpuload'' : <sxh bash>ln -s /usr/share/munin/plugins/snmp__cpuload /etc/munin/plugins/snmp_windows.shyrka.sys_cpuload</sxh> * Et pour ''snmp_if_ '' : <sxh bash>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</sxh> * 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.sys'' et non celui de la machine portant le node, à savoir le serveur Munin). Ce qui donne : <sxh>[windows.shyrka.sys] address 127.0.0.1 use_node_name no </sxh> * Il ne reste plus qu'à redémarrer les services ''munin-node'' et ''apache2'' : <sxh bash>service munin-node restart service apache2 restart</sxh> ===== Erreurs et Corrections ===== ==== Failed to restart munin.service: Unit munin.service is masked. ==== * Vérifier si le fichier de service pointe sur ''/dev/null'' : <sxh bash>ls -l /lib/systemd/system/munin.service # Retour lrwxrwxrwx 1 root root 9 mars 3 2017 munin.service -> /dev/null</sxh> * Dans ce cas, supprimez le fichier : <sxh bash>rm -f /lib/systemd/system/munin.service</sxh> * Relancez le //daemon// : <sxh bash>systemctl daemon-reload</sxh> * Vérifier le service : <sxh bash>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)</sxh> * Si le retour est correct, relancer le service : <sxh bash>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.</sxh> ~~DISCUSSION~~ linux_munin.txt Dernière modification : 2021/03/05 18:42de nekan