Le blog de Dju - Mot-clé - graphiquesUn peu de moto, un zeste de geek, et un brin d'autres trucs ;-)2024-03-22T17:50:26+01:00Djuurn:md5:5e61426dd704534f4aef077f5b82260bDotclearMonitorer son serveur avec Muninurn:md5:990552fe6e76170da088268f906d8db92010-01-12T01:35:00+01:002010-08-18T15:46:48+02:00DjuServeurgraphiquesmonitoringmuninserveursurveillance<p><img src="https://blog.crifo.org/public/201001/munin/.munin_thumb_t.jpg" alt="munin_thumb.jpg" style="margin: 0 1em 1em 0; float: left;" title="munin_thumb.jpg, janv. 2010" />
Après avoir mis en place Monit pour surveiller l'état des services, voici aujourd'hui comment installer et configurer munin, dont le but est de collecter régulièrement les données comme l'espace disque dur, l'utilisation de la ram, du processeur, les températures, les accès apache etc... et d'en faire des jolis graphiques, qui seront mis à jours régulièrement.<br />
Cela permet surtout d'avoir une vue sur l'évolution des données à long terme <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p> <p>Tout d'abord, une petite explication sur comment fonctionne munin, à savoir en 2 temps :<br />
1/ le service munin-node écoute sur un port tcp de notre choix, afin de pouvoir récupérer les données<br />
2/ ensuite script tourne régulièrement (toutes les 5 minutes par défaut), interroge ce service, collecte les données et calcule les graphiques</p>
<p>Par défaut, la configuration se fait dans <strong>/etc/munin/</strong> et les fichiers générés (html et graphs au format png) dans <strong>_/var/www/munin/</strong>_ <br />
(Il faudra que vous ayez paramétré votre serveur web pour accéder à ce dossier afin de vous extasier devant ces œuvres d'art :D )</p>
<p>Une fois dans le dossier /etc/munin/ on a plusieurs fichiers et dossiers :<br />
- le fichier <strong>munin.conf</strong>: dans lequel on indique sur quelle(s) machine(s) on va récupérer les données<br />
- le fichier __munin-node.conf_: la ou on configure les accès depuis d'autres machines, ainsi que l'ip et le port sur lequel le service va écouter<br />
- le dossier <strong>plugin-conf.d</strong>: contient les parmètres des plugins<br />
- le dossier <strong>plugins</strong>: contient les plugins. ce sont les scripts chargés de récupérer les données<br />
- le dossier <strong>templates</strong>: contient les templates html qu'on peut modifier à loisir</p>
<p><ins>1/ configuration de munin.conf</ins></p>
<p>voici les données essentielles à éditer selon vos besoins <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /><br />
htmldir: indique ou seront générés les fichiers html et graphiques, par défaut dans /var/www/munin/<br />
logdir: ou sont enregistrés les logs</p>
<p>et le plus important du fichier, quelle machine doit on surveiller</p>
<pre>[localhost.localdomain]<br /> address 127.0.0.1<br /> use_node_name yes</pre>
<p>indique ici qu'on va se connecter à la machine locale, sur le port tcp 4949 (par défaut).<br />
use_node_name à yes si on veut voir apparaitre le nom de la machine. par défaut à oui.<br />
Par exemple, depuis le zotac,je souhaite également surveiller mon routeur. je rajoute donc</p>
<pre>[routeur]<br /> address 192.168.0.1<br /> use_node_name yes</pre>
<p><ins>2/ configuration de munin-node.conf</ins></p>
<p>Ici on va définir qui a accès aux données de la machine sur laquelle on vient d'installer munin.<br />
Par défaut on a</p>
<blockquote><p>allow ^127\.0\.0\.1$</p>
</blockquote>
<p>pour autoriser juste la machine en local.<br />
Cette clé "allow" utilise une expression régulière. on indique donc ^ pour indiquer le début de la chaine, puis l'ip dont on échappe les points avec un \ et enfin un $ pour indiquer la fin.</p>
<p>Ensuite on indique sur quelle ip on veut que le service écoute</p>
<blockquote><p>host 127.0.0.1</p>
</blockquote>
<p>Par défaut, c'est en local uniquement, mais on peut mettre une autre ip si veut être "écoutable" sur le réseau, ou 0.0.0.0 pour toutes les ip de la machine.</p>
<p>Enfin on indique le port sur lequel écouter</p>
<blockquote><p>port 4949</p>
</blockquote>
<p>4949 étant le port tcp par défaut <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<p><ins>3/ configuration des plugins</ins></p>
<p>Haaa voila le point le plus interessant :w
En premier il faut savoir ce qu'est un plugin. C'est tout simple, c'est un script (dont le langage peut être le perl, le script shell, le php, le python... ou autre <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /> ) qui va récuperer une ou plusieurs données précise à un instant t, et l'écrire dans la sortie standard.<br />
Il est donc très facile de se faire soi même un plu gin pour monitorer quelque chose que l'on souhaite surveller. J'en ai d'ailleurs écrit moi même quelques un, par exemple pour surveiller les connections imaps au serveur mail de mon boulot (beaucoup de outlook assez irrespectueux balançant 4 ou 5 connections à la fois alors que 2 suffisent... :o ), ou d'autres que j'ai un peu améliorer, par exemple les authentifications par SSH, ou l'état des mails délivrés, rejettés etc par postfix.</p>
<p>Bref, ils se trouvent dans le dossier "plugins". Une fois dedans que voit on ? pas des fichier standards mais des liens symboliques.<br />
En effet les plugins sont en fait physiquement enregistrés dans le dossier <strong>/usr/share/munin/plugins/</strong> et seuls ce qu'on souhaite utiliser sont linkés dans ce dossier.<br />
Par défaut il y en a deja quelques un qui vous permettront de voir l'utilisation du cpu, de la ram, du disque dur, des netstats, températures et autres... ils sont toutà fait suffisant, mais une fois que vou saurez à peu près ce que fait chaque plugin, rien ne vousempêche de supprimer les liens symboliques de ceux dont vous n'avez pas besoin, et de faire un lien vers d'autres plus utiles<br />
Jettez donc un coup d'oeil dans ces fichiers pour voir comment ils sont écrit afin de vous en inspirer si le coeur vous en dit <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<p>Ensuite, pour chaque plugin, un droit d'accès est défini dans le fichier plugin-conf.d/munin-node sous la forme</p>
<pre>[nom_du_plugin]<br />user nom_user<br />group nom_groupe<br />autre variable_denvironnement</pre>
<p>par exemple, pour le plugin hddtemp_smartctl, on a</p>
<pre>[hddtemp_smartctl]<br />user root</pre>
<p>car le plugin utilise la commande smartctl qui ne peut s'executer qu'en root.<br />
Autre exemple,pour les plugin postfix, le fichier de log postfix (généralement /var/log/mail.log) doit pouvoir être lu. On mettra donc les droits sur le groupe adm</p>
<pre>[postfix_mailstats]<br />group adm</pre>
<p>Donc à peu près chaque plugin a ses droits, sauf certain qui n'ont pas besoin de plus que les accès de base.<br />
Au passage, si vous cherchez des plugins intéressants, <a href="http://muninexchange.projects.linpro.no/?search">il y en a toute une tripotée ici</a><br />
Et pour le site officiel, ça se passe la: <a href="http://munin.projects.linpro.no/">http://munin.projects.linpro.no/</a></p>
<p><ins>4/ configuration d'accès http au répertoire munin</ins></p>
<p>Enfin on configure son serveur web pour pouvoir voir tous ces jolis graphiques depuis son navigateur web.<br />
Ici l'accès est autorisé en local (127.0.0.1) et à 192.168.0.1. A vous de l'adapter <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" />
Pour apache :</p>
<pre>Alias /munin "/var/www/munin/"<br /><Directory /var/www/munin/><br /> Order deny,allow<br /> deny from all<br /> allow from 127.0.0.1 192.168.0.1<br /></Directory</pre>
<p>Pour nginx :</p>
<pre>server {<br /> ...<br /> location /munin {<br /> root /var/www;<br /> index index.html;<br /> allow 127.0.0.1;<br /> allow 192.168.0.1;<br /> deny all;<br /> }<br />}</pre>
<p>Enfin, n'oubliez pas de redémarrer munin pour valider votre configuration :</p>
<blockquote><p>/etc/init.d/munin-node restart</p>
</blockquote>
<p>De même pour chaque fois que vous installez un nouveau plugin. Enregistrez le dans <strong>/usr/share/munin/plugins/</strong> puis faites en un lien symbolique vers <strong>/etc/munin/plugins/votre_plugin</strong> et redémarrez munin pour valider.</p>
<p>Si vous souhaitez changer la fréquence de récuperation des données (par défaut toutes les 5 minutes) ça se passe dans <strong>/etc/cron.d/munin</strong><br />
Il y a une ligne lancant la récuperation :</p>
<pre> */5 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi </pre>
<p>ne mettez pas moins de 5 minutes car ça ne servirait pas à grand chose, si ce n'est à utiliser beaucoup de ressources. En moyenne, 10mn est pas mal.<br />
Egalement, ne transformez pas munin en usine à gaz en installant 10 mille plugins qui ne vous serviront pas. Voyez desquels vous avez besoin et désactivez les autres <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<p>Au final, attendez 10/15 minutes, lancez votre naviguateur web sur http://votre_machine/munin/ et admirez <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>Et si vous avez un jouli zotac mag dont vous voulez monitorer les températures, <a href="https://blog.crifo.org/post/2010/01/01/Zotac-mag-enfin-recu">allez lire ce précèdent billet</a> pour savoir comment les obtenir.<br />
Après, activez le plugins sensors pour avoir le cpu</p>
<blockquote><p>ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp</p>
</blockquote>
<p>Activez la plugin hddtemp_smartctl pour le disque dur</p>
<blockquote><p>ln -s /usr/share/munin/plugins/hddtemp_smartctl /etc/munin/plugins/hddtemp_smartctl</p>
</blockquote>
<p>Et pour la carte graphique (qui est toujours à 55/56°), <a href="http://exchange.munin-monitoring.org/plugins/nvclock/details">j'ai écrit un plugin en script shell</a> qui récupère les températures grâce à la commande <strong>nvclock -i</strong></p>
<p>De même, à enregistrer dans /usr/share/munin/plugins et faire un lien symbolique</p>
<blockquote><p>ln -s /usr/share/munin/plugins/nvclock /etc/munin/plugins/nvclock</p>
</blockquote>
<p>Et rajouter dans /etc/munin/plugin-conf.d/munin-node</p>
<pre>[nvclock]<br /> user root</pre>
<br />
<ins><strong>EDIT:</strong></ins> raaah quelle buse, j'avais z'oublié le presque plus important : configurer munin pour qu'il puisse vous prévenir par email.<br />
Pour ce faire, dans le fichier munin.conf, on rajoute ces 2 lignes :<br />
<pre>contact.moi.command mail -s "Notification Munin pour ${var:host}" mon_adresse@mondomaine.com<br />contact.moi.always_send warning critical</pre>
dans ces 2 lignes, "moi" est le nom du contact, vous pouvez mettre ce que vous voulez, ou meme vous faire plusieurs contacts.<br />dans la 1è ligne on indique la commande utilisée pour envoyer un mail d'alerte (avec dans le sujet la variable host)<br />dans la 2è ligne, on définit le type d'alerte à envoyer à notre contact.<br />On peut ainsi se faire un 1er contact qui ne recevra que les warnings, et un 2è pour les cas de force majeurs, qui recevra les alertes critiques <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" />https://blog.crifo.org/post/2010/01/12/Monitorer-son-serveur-avec-Munin#comment-formhttps://blog.crifo.org/feed/atom/comments/24