<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://uname.pingveno.net/blog/index.php/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title># uname -a - Mot-clé - serveur</title>
    <link>https://uname.pingveno.net/blog/index.php/</link>
    <atom:link href="https://uname.pingveno.net/blog/index.php/feed/tag/serveur/rss2" rel="self" type="application/rss+xml" />
    <description>Le blog de uname.pingveno.net</description>
    <language>fr</language>
    <pubDate>Tue, 18 Aug 2026 13:46:21 +0200</pubDate>
    <copyright>Mathieu Pellegrin</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>La délégation NS d'un sous-domaine, cet illustre inconnu</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2019/03/02/La-d%C3%A9l%C3%A9gation-NS-d-un-sous-domaine%2C-cet-illustre-inconnu</link>
        <guid isPermaLink="false">urn:md5:1b281af171b186ea2d70f7efa5c4e471</guid>
        <pubDate>Tue, 05 Mar 2019 09:15:00 +0100</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>delegation</category>
                  <category>dns</category>
                  <category>serveur</category>
                <description>&lt;p&gt;Un billet un peu technique aujourd'hui. Si vous travaillez dans le Web, vous n'êtes pas sans savoir que c'est le mécanisme des DNS qui fait en sorte que vos noms de domaine soient résolus en adresses vers votre hébergement.&lt;/p&gt;

&lt;p&gt;Vous savez aussi peut-être ce qu'est une zone DNS. Une zone DNS est un bête fichier présent sur le serveur DNS, et qui contient l'ensemble des enregistrements du domaine&lt;sup&gt;1&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Vous savez aussi certainement ce qu'est un sous-domaine, par exemple pour le domaine example.com, des sous-domaines seraient :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;www.example.com&lt;/li&gt;
	&lt;li&gt;test.example.com&lt;/li&gt;
	&lt;li&gt;sousdomaine.example.com&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Parfois, pour séparer les services, on souhaite aller encore plus loin et dédier un sous-domaine entier à une tâche, par exemple on souhaite faire en sorte que compta.example.com soit totalement indépendant, c'est à dire :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Qu'on puisse recevoir sur l'email facturation@compta.example.com ,&lt;/li&gt;
	&lt;li&gt;Qu'on puisse avoir des mini-sites dédiés sous ce sous-domaine, comme urssaf.compta.example.com ou creances.compta.example.com&lt;/li&gt;
	&lt;li&gt;Que le sous-domaine puisse servir tout autre usage tel que permis par les DNS (enregistrements SRV, etc)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bien sûr, ces usages sont possibles à partir de la zone DNS du domaine parent, mais à mesure que le sous-domaine grandit en indépendance (et donc en nombre d'enregistrements), il peut être nécessaire de poser les bases d'une délégation plus avancée, pour éviter de maintenir une zone avec tous les enregistrements. On peut aussi vouloir déléguer à un prestataire la gestion de ce sous-domaine.&lt;/p&gt;

&lt;p&gt;Pour ce qui est des mini-sites, il est relativement simple de déclarer un &lt;em&gt;wildcard&lt;/em&gt; pour rediriger tous les enregistrements d'un sous-domaine vers un même serveur. Mais lorsqu'on veut plus de souplesse, ou que l'on veut aussi déléguer tous les enregistrements de ce sous-domaine, un &lt;em&gt;wildcard&lt;/em&gt; est trop &quot;brutal&quot; et pas toujours supporté par toutes les spécifications, il faut alors déléguer la zone via une délégation NS.&lt;/p&gt;          &lt;h3&gt;En deux images&lt;/h3&gt;

&lt;figure&gt;&lt;a class=&quot;media-link&quot; href=&quot;https://uname.pingveno.net/blog/public/schemas/delegation-ns/requete-dns-classique.png&quot;&gt;&lt;img alt=&quot;requete-dns-classique.png&quot; class=&quot;media&quot; src=&quot;https://uname.pingveno.net/blog/public/schemas/delegation-ns/.requete-dns-classique_m.png&quot; /&gt;&lt;/a&gt;

&lt;figcaption&gt;Requête DNS classique : le serveur répond au client avec un enregistrement A&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;a class=&quot;media-link&quot; href=&quot;https://uname.pingveno.net/blog/public/schemas/delegation-ns/requete-dns-deleguation.png&quot;&gt;&lt;img alt=&quot;requete-dns-deleguation.png&quot; class=&quot;media&quot; src=&quot;https://uname.pingveno.net/blog/public/schemas/delegation-ns/.requete-dns-deleguation_m.png&quot; /&gt;&lt;/a&gt;

&lt;figcaption&gt;Requête DNS déléguée : le serveur répond d'aller interroger un autre serveur,&lt;br /&gt;
le client transmet la requête à l'autre serveur et obtient l'enregistrement A.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;En exemple&lt;/h3&gt;

&lt;p&gt;Prenons un exemple de la vie réelle. Sortez votre commande &lt;em&gt;dig&lt;/em&gt;, et examinez le domaine &lt;em&gt;pingveno.net&lt;/em&gt; :&lt;/p&gt;

&lt;pre&gt;
dig +trace pingveno.net @8.8.8.8

pingveno.net.        172800    IN    NS    ns-197-a.gandi.net.
pingveno.net.        172800    IN    NS    ns-150-b.gandi.net.
pingveno.net.        172800    IN    NS    ns-153-c.gandi.net.
;; Received 733 bytes from 192.52.178.30#53(k.gtld-servers.net) in 46 ms

pingveno.net.        3600    IN    A    xx.xx.xx.xx
;; Received 57 bytes from 217.70.187.154#53(ns-153-c.gandi.net) in 45 ms&lt;/pre&gt;

&lt;p&gt;Dans l'exemple ci-dessus, j'ai retiré les appels du &lt;em&gt;root server&lt;/em&gt; car ils ne sont pas pertinents pour notre exemple. On constate que la requête est transmise aux serveurs de Gandi, qui répondent directement avec l'enregistrement A du domaine.&lt;/p&gt;

&lt;p&gt;Nouvel exemple, avec le sous-domaine uname.pingveno.net :&lt;/p&gt;

&lt;pre&gt;
dig +trace pingveno.net @8.8.8.8

pingveno.net.        172800    IN    NS    ns-197-a.gandi.net.
pingveno.net.        172800    IN    NS    ns-150-b.gandi.net.
pingveno.net.        172800    IN    NS    ns-153-c.gandi.net.
;; Received 737 bytes from 2001:501:b1f9::30#53(m.gtld-servers.net) in 114 ms

pingveno.net.        3600    IN    A    xx.xx.xx.xx
www.pingveno.net.    10800    IN    CNAME    pingveno.net.
;; Received 75 bytes from 217.70.187.154#53(ns-153-c.gandi.net) in 44 ms&lt;/pre&gt;

&lt;p&gt;Cette fois le serveur répond avec un CNAME vers pingveno.net, c'est la méthode &quot;pas chère&quot; de déléguer le sous-domaine à un autre enregistrement. Ce n'est pas un wildcard, puisque l'enregistrement est seul, mais le résultat aurait été le même avec un wildcard.&lt;/p&gt;

&lt;p&gt;Enfin, essayons avec ishimaru.pingveno.net :&lt;/p&gt;

&lt;pre&gt;
dig +trace ishimaru.pingveno.net @8.8.8.8

pingveno.net.        172800    IN    NS    ns-197-a.gandi.net.
pingveno.net.        172800    IN    NS    ns-150-b.gandi.net.
pingveno.net.        172800    IN    NS    ns-153-c.gandi.net.
;; Received 742 bytes from 192.41.162.30#53(l.gtld-servers.net) in 45 ms

ishimaru.pingveno.net.    10800    IN    NS    a.ns.wellhosted.ch.
ishimaru.pingveno.net.    10800    IN    NS    b.ns.wellhosted.ch.
;; Received 98 bytes from 213.167.230.151#53(ns-150-b.gandi.net) in 44 ms

ishimaru.pingveno.net.    60    IN    A    xx.xx.xx.xx
ishimaru.pingveno.net.    3600    IN    NS    b.ns.wellhosted.ch.
ishimaru.pingveno.net.    3600    IN    NS    a.ns.wellhosted.ch.
;; Received 130 bytes from 2a03:2040:d:121::1#53(a.ns.wellhosted.ch) in 49 ms
&lt;/pre&gt;

&lt;p&gt;Cette fois, le serveur a répondu en deux temps : il a indiqué un enregistrement NS sur le sous-domaine, puis le client (ici la commande &lt;em&gt;dig&lt;/em&gt;) a continué la requête vers les serveurs indiqués dans l'enregistrement NS pour retourner finalement l'adresse IP.&lt;/p&gt;

&lt;p&gt;C'est une délégation NS. Cela signifie que tout le sous-domaine (la zone complète) de ishimaru.pingveno.net n'est pas gérée par &lt;em&gt;gandi.net&lt;/em&gt;, mais par &lt;em&gt;a.ns.wellhosted.ch&lt;/em&gt; . De cette manière, le sous-domaine est totalement indépendant, et peut être utilisé pour tous les usages d'un domaine de niveau supérieur.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;C'est tout, ce court article sert juste à démystifier l'enregistrement NS, qui est très peu souvent utilisé, d'une part par la méconnaissance de la plupart des &quot;webdesigners&quot; se contentant de pointer des sous-domaines en A ou en AAAA, et ensuite parce qu'il faut pouvoir déléguer à un serveur DNS, tous les prestataires ne sont pas équipés pour accueillir un domaine de cette façon.&lt;/p&gt;

&lt;h3&gt;Notes&lt;/h3&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; : L'ensemble, ou presque, le serveur DNS ne portant que la zone sur laquelle il a autorité, tout le travail du client DNS consiste justement à interroger les serveurs DNS en cascade, pour arriver à l'enregistrement qui fait autorité. Pas d'exposé là dessus aujourd'hui, mais vous pouvez &lt;a href=&quot;https://fr.wikipedia.org/wiki/Domain_Name_System#Hi%C3%A9rarchie_du_DNS&quot;&gt;lire la doc&lt;/a&gt;.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>SSL vs TLS vs STARTTLS</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2016/06/13/SSL-vs-TLS-vs-STARTTLS</link>
        <guid isPermaLink="false">urn:md5:6edbd0220a0b8dc911d751eb40a11ddc</guid>
        <pubDate>Mon, 13 Jun 2016 17:03:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>mail</category>
                  <category>serveur</category>
                  <category>ssl</category>
                  <category>starttls</category>
                  <category>tls</category>
                <description>&lt;p&gt;Cet article est une traduction libre de &lt;a href=&quot;https://www.fastmail.com/help/technical/ssltlsstarttls.html&quot;&gt;https://www.fastmail.com/help/technical/ssltlsstarttls.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;J'ai réalisé cette traduction pour fournir à mes clients une explication simple mais complète sur le pourquoi du comment de SSL/TLS/STARTTLS lors de la configuration de leur client mail.&lt;/p&gt;

&lt;p&gt;Attention, &lt;strong&gt;l'article original date de 2012&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;Définitions&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Protocole&lt;/strong&gt; : un protocole de communication est un format de données, un &quot;langage&quot; permettant à deux machine de communiquer entre elles. Les deux machines doivent être en capacité de parler le même protocole pour pouvoir échanger des données. SSL est un protocole de communication sécurisé (&quot;chiffrés&quot;), popularisé par le célèbre &quot;cadenas&quot; visible sur les pages web.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;&lt;strong&gt;Port&lt;/strong&gt; : un port est un numéro de service sur lequel les logiciels vous pouvoir communiquer entre eux. La plupart des numéros de port sont associés à des protocoles précis.&lt;/p&gt;
	&lt;/li&gt;
&lt;/ul&gt;          &lt;h3&gt;Introduction&lt;/h3&gt;

&lt;p&gt;Il y a souvent de la confusion autour des différents termes &lt;strong&gt;SSL&lt;/strong&gt;, &lt;strong&gt;TLS&lt;/strong&gt; and &lt;strong&gt;STARTTLS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Transport_Layer_Security&quot;&gt;SSL et TLS&lt;/a&gt; fournissent tous deux un moyen de chiffrer le canal de communication entre deux ordinateurs (par exemple votre ordinateur et votre serveur mail). TLS est le successeur de SSL et les termes SSL et TLS sont interchangeables, à moins que vous ne fassiez référence à une version particulière du protocole.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Starttls&quot;&gt;STARTTLS&lt;/a&gt; est un moyen de prendre une connexion non chiffrée existante, et la &quot;mettre à jour&quot; vers une connexion sécurisée en utilisant SSL/TLS. Notez que même s'il contient TLS dans son nom, STARTTLS ne signifie pas que vous devez obligatoirement utiliser TLS, vous pouvez utiliser SSL.&lt;/p&gt;

&lt;h3&gt;Numéros de version SSL/TLS&lt;/h3&gt;

&lt;p&gt;La numérotation des versions du protocole est inconsistante entre SSL et TLS. Lorsque TLS a remplacé SSL comme protocole préférentiel pour les communications chiffrées, il a commencé avec une nouvelle numérotation de versions, et a également commencé à utiliser des sous-versions. L'ordre des versions des protocoles du plus ancien au plus récent est donc : SSL&amp;nbsp;v2, SSL&amp;nbsp;v3, TLS&amp;nbsp;v1.0, TLS&amp;nbsp;v1.1, TLS&amp;nbsp;v1.2.&lt;/p&gt;

&lt;p&gt;Lorsque vous vous connectez sur un port chiffré avec SSL/TLS, ou que vous utilisez STARTTLS pour convertir la connexion en connexion chiffrée, les deux systèmes vont négocier quel protocole et quelle version utiliser, en se basant ce qui a été configuré et sur ce que chaque système supporte.&lt;/p&gt;

&lt;p&gt;Le support pour SSL/TLS est &quot;virtuellement&quot; universel de nos jours, mais le support des versions est variable. Pratiquement tous les systèmes supportent SSL&amp;nbsp;v3 (à part quelques rares appareils Palm Treo &lt;a href=&quot;https://blog.fastmail.com/2009/11/18/special-ssl-hostname-for-old-clients/&quot;&gt;comme nous avons pu le constater&lt;/a&gt;). La plupart des systèmes supportent TLS&amp;nbsp;v1.0. À la date de Mai 2012, &lt;a href=&quot;https://en.wikipedia.org/wiki/Transport_Layer_Security#Web_browsers&quot;&gt;le support pour TLS&amp;nbsp;v1.1 et TLS&amp;nbsp;v1.2 est beaucoup plus restreint&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Dénomination incorrecte TLS vs STARTTLS&lt;/h2&gt;

&lt;p&gt;Pour compliquer les choses, certains logiciels de mail utilisent &lt;strong&gt;incorrectement&lt;/strong&gt; le terme TLS à la place de STARTTLS. Les plus vieilles versions de Thunderbird en particulier utilisent &quot;TLS&quot; pour dire « &lt;code&gt;utiliser STARTTLS pour chiffrer la connexion dès que possible et abandonner si STARTTLS n'est pas supporté&lt;/code&gt; » et « &lt;code&gt;TLS, si disponible&lt;/code&gt; » signifie « &lt;code&gt;utiliser STARTTLS pour chiffrer la connexion dès que possible si le serveur déclare le supporter, sinon utiliser simplement une connexion non chiffrée&lt;/code&gt; ».&lt;/p&gt;

&lt;h2&gt;Numéros de ports SSL/TLS vs plaintext/STARTTLS&lt;/h2&gt;

&lt;p&gt;Le problème du dessus est particulièrement problématique lorsque vous devez configurer des ports différents pour chaque protocole.&lt;/p&gt;

&lt;p&gt;Pour ajouter de la sécurité à certains protocoles (e.g. IMAP, POP, etc.), il a été décidé d'ajouter nativement une couche de chiffrement SSL/TLS dans le protocole. Cependant, pour identifier que le logiciel doit parler la version nativement chiffrée du protocole au lieu de la version non chiffrée, un port différent a été déclaré pour chaque protocole. Vous avez donc :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;IMAP utilise le port &lt;code&gt;143&lt;/code&gt;, mais IMAP avec SSL/TLS utilise le port &lt;code&gt;993&lt;/code&gt;.&lt;/li&gt;
	&lt;li&gt;POP utilise le port &lt;code&gt;110&lt;/code&gt;, mais POP avec SSL/TLS utilise le port &lt;code&gt;995&lt;/code&gt;.&lt;/li&gt;
	&lt;li&gt;SMTP utilise le port &lt;code&gt;25&lt;/code&gt;, mais SMTP avec SSL/TLS utilise le port &lt;code&gt;465&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Au bout d'un moment, il a été décidé qu'utiliser deux ports pour chaque protocole était du gaspillage, et qu'à la place il devrait y avoir un seul port sur lequel commencer la communication de manière non chiffrée, puis proposer au système distant de mettre à jour vers la version chiffrée. C'est ce pour quoi STARTTLS a été créé.&lt;/p&gt;

&lt;p&gt;Il y a eu quelques problèmes avec cette proposition. Il y avait déjà des logiciels qui utilisaient les numéros de port alternatifs avec une connexion SSL/TLS native. Les logiciels clients peuvent avoir une durée de vie très longue, donc vous ne pouvez pas juste désactiver les ports chiffrés avant que tous les logiciels ne soient remplacés ou mis à jour.&lt;/p&gt;

&lt;p&gt;Des mécanismes ont été mis en place sur chaque protocole pour dire aux systèmes que le protocole non chiffré supportait STARTTLS, et qu'ils ne doivent pas essayer de se connecter avant de démarrer la négociation STARTTLS. Cela créa deux situations malheureuses :&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Certains logiciels ignoraient simplement l'instruction « &lt;code&gt;login désactivé jusqu'à ce que la connexion soit convertie en SSL avec STARTTLS&lt;/code&gt; » et essayaient de se connecter tout de même, envoyant leur login et mot de passe à travers la connexion non chiffrée. Même si le serveur à ce moment là rejette le login, les informations sont déjà passées en clair sur Internet.&lt;/li&gt;
	&lt;li&gt;D'autres logiciels voyaient l'annonce « &lt;code&gt;login désactivé jusqu'à conversion en SSL&lt;/code&gt; », mais ne mettaient pas à jour leur connexion automatiquement, et renvoyaient des erreurs « &lt;code&gt;mot de passe incorrect&lt;/code&gt; » à l'utilisateur, ce qui provoqua de la confusion sur ce qui était incorrect dans la configuration.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ces deux problèmes causèrent finalement d'importantes incompatibilités entre les logiciels existants, et la plupart des administrateurs systèmes continuèrent d'utiliser les connexions exclusivement non sécurisés sur le port d'origine, et les connexions SSL natives sur un port alternatif.&lt;/p&gt;

&lt;p&gt;C'est donc devenu de fait le standard que tout le monde utilise. IMAP SSL/TLS chiffré sur le port&lt;code&gt;993&lt;/code&gt; ou POP SSL/TLS chiffré sur le port &lt;code&gt;995&lt;/code&gt;. Beaucoup de sites (dont FastMail) désactive à présent le port IMAP non sécurisé (port &lt;code&gt;143&lt;/code&gt;) et le port POP non sécurisé (port &lt;code&gt;110&lt;/code&gt;) pour que les utilisateurs utilisent &lt;strong&gt;obligatoirement&lt;/strong&gt; une connexion chiffrée SSL/TLS. En désactivant les ports &lt;code&gt;143&lt;/code&gt; et &lt;code&gt;110&lt;/code&gt;, cela supprime également complètement STARTTLS, même en tant qu'option pour les connexions IMAP/POP.&lt;/p&gt;

&lt;h2&gt;SMTP STARTTLS comme une exception&lt;/h2&gt;

&lt;p&gt;La seule vraie exception à ce qui précède est SMTP. Cependant, c'est pour une raison différente. La plupart des logiciels email utilisent utilisaient le port &lt;code&gt;25&lt;/code&gt; pour soumettre des messages à envoyer au serveur mail. Cependant, SMTP a été créé à l'origine comme un protocole d'échange de messages, et non de soumission. Un autre port (587) a donc été &lt;a href=&quot;https://tools.ietf.org/html/rfc2476&quot;&gt;déclaré pour la soumission de messages&lt;/a&gt;. Bien que le port &lt;code&gt;587&lt;/code&gt; ne nécessite pas explicitement STARTTLS, l'utilisation du port &lt;code&gt;587&lt;/code&gt; est devenu populaire au même moment où l'utilisation de SSL/TLS était devenue un enjeu important de sécurité et de confidentialité.&lt;/p&gt;

&lt;p&gt;Le résultat c'est que dans la plupart des cas, les systèmes qui proposent la soumission par le port &lt;code&gt;587&lt;/code&gt; &lt;strong&gt;nécessitent&lt;/strong&gt; que les logiciels utilisent STARTTLS pour chiffre la connexion, et nécessitent aussi un login et un mot de passe pour s'identifier. Il y a plusieurs avantages à cette approche. En écartant les utilisateurs du port &lt;code&gt;25&lt;/code&gt;, les FAI ont été en mesure de bloquer le port &lt;code&gt;25&lt;/code&gt; pour prévenir les envois automatiques de SPAM causés par l'infection des postes de leurs utilisateurs.&lt;/p&gt;

&lt;p&gt;Actuellement,&amp;nbsp; les choses semblent encore aléatoires, divisées entre les gens qui utilisent SMTP SSL/TLS chiffré sur le port &lt;code&gt;465&lt;/code&gt;, et les gens qui utilisent SMTP avec STARTTLS sur le port &lt;code&gt;587&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;NDLR : SMTPS sur le port &lt;code&gt;465&lt;/code&gt; est aujourd'hui &lt;a href=&quot;https://en.wikipedia.org/wiki/SMTPS&quot;&gt;définitivement obsolète&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Diminuer le taux de rejet des mails sortants pour un fournisseur de boîtes mail</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2016/02/09/Diminuer-le-taux-de-rejet-des-mails-sortants-pour-un-fournisseur-de-bo%C3%AEtes-mail</link>
        <guid isPermaLink="false">urn:md5:de20367e11d0beb125dad9998acb8bf6</guid>
        <pubDate>Tue, 09 Feb 2016 21:06:00 +0100</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>exim</category>
                  <category>mail</category>
                  <category>postfix</category>
                  <category>serveur</category>
                <description>&lt;p&gt;En théorie, tout le monde peut s’improviser fournisseur d’emails, il suffit d’une machine avec les ports ouverts sur Internet et de quelques connaissances pour configurer le serveur mail (Postfix, Exim…)&lt;/p&gt;

&lt;p&gt;En pratique, les fournisseurs de mails subissent la «&amp;nbsp;concurrence déloyale&amp;nbsp;» de leur camarades, car envoyer un mail c’est bien, faire en sorte qu’il soit reçu c’est mieux. Les «&amp;nbsp;concurrents&amp;nbsp;» ce sont les fournisseurs de service comme Hotmail, Gmail, Yahoo, et bien d’autres. Afin de lutter contre le SPAM, ces sociétés sont de plus en plus strictes sur la source des mails qui sont reçus par leurs services.&lt;/p&gt;

&lt;p&gt;Une des conséquences c’est que les petits opérateurs, comme une start-up qui fournit de l’hébergement, un FAI associatif, ou même un particulier qui veut se réapproprier Internet, se font bloquer assez rapidement avec peu de solutions de recours, le support faisant souvent la sourde oreille.&lt;/p&gt;

&lt;p&gt;Dans cet article, je vais donc explorer quelques pistes pour vous permettre d’abord d’éviter de vous retrouver bloqués, et ensuite contourner le blocage le cas échéant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ce billet est le produit de mes expériences avec l'hébergeur &lt;a href=&quot;http://wellhosted.ch&quot;&gt;wellhosted&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;          &lt;h3&gt;Réputation (et monitoring)&lt;/h3&gt;

&lt;p&gt;Déjà, si vous avez une adresse IP dynamique, oubliez l’envoi de mails. Il est très difficile avec une IP dynamique d’assurer à la fois une réception correcte (même avec un MX pointant sur un DynDNS), et un envoi qui réussisse à tous les coups. D’ailleurs, la plupart des opérateurs proposant des IPs dynamiques bloquent le port 25, rendant l’envoi des mails «&amp;nbsp;entre serveurs&amp;nbsp;» impossible.&lt;/p&gt;

&lt;p&gt;Ensuite, la seconde bonne raison pour avoir une IP fixe, c’est que les contrôlent antispam reposent en grande partie sur la réputation des IPs qui leur envoient des mails. Ce mécanisme s’appelle le &lt;a href=&quot;https://fr.wikipedia.org/wiki/Lutte_anti-spam#RBL&quot;&gt;RBL&lt;/a&gt; pour Realtime Block List. Les serveurs s’abonnent à des listes d'adresses IP connues pour émettre du SPAM, et refusent de recevoir les mails depuis ces IPs. Pas de chance si vous avez hérité d’une IP « qui pue », il vous faudra patiemment demander votre retrait de la liste de blocage au cas par cas.&lt;/p&gt;

&lt;p&gt;Il existe des outils pour tester votre IP sur un grand nombre de RBL&amp;nbsp; : &lt;a href=&quot;http://mxtoolbox.com/blacklists.aspx&quot;&gt;mxtoolbox.com/blacklists.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vous pouvez également mettre en place une surveillance automatique de votre réputation sur plusieurs blocklists, soit &lt;a href=&quot;https://exchange.nagios.org/directory/Plugins/Email-and-Groupware/check_rbl/details&quot;&gt;avec un simple plugin Nagios&lt;/a&gt;, soit avec un outil comme &lt;a href=&quot;http://www.rblmon.com/&quot;&gt;RBLMon&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A noter que certaines listes ne permettent pas de faire «&amp;nbsp;retirer&amp;nbsp;» votre IP de la liste. Pas d’inquiétude pour ces listes, personne ne les utilise. Il existe par contre des fournisseurs de service qui ne publient pas leurs listes, et qui ont un processus contraignant pour se faire débloquer (Microsoft par exemple).&lt;/p&gt;

&lt;p&gt;Une fois que votre IP est fixe et qu'elle est propre, l’étape suivante c’est conserver la réputation de votre IP et être irréprochable sur les mails que vous envoyez, mail nous verrons cela dans la suite.&lt;/p&gt;

&lt;h3&gt;IPv6&lt;/h3&gt;

&lt;p&gt;Même si ce n’est pas indispensable, IPv6 est le futur d'Internet, et de nombreux serveurs mails parlent IPv6. En utilisant IPv6, vous aurez aussi l’avantage que beaucoup de RBL ne sont pas prêtes pour IPv6, et donc votre IP ne sera certainement pas bloquée sur ces listes.&lt;/p&gt;

&lt;p&gt;Revers de la médaille : oubliez l’utilisation d’une IPv6 exclusive, certains fournisseurs de mail utilisent encore exclusivement IPv4, il vous faudra donc une configuration réseau supportant les deux adressages pour être certain de pouvoir livrer vos mails.&lt;/p&gt;

&lt;h3&gt;Reverse, PTR, et Hostname&lt;/h3&gt;

&lt;p&gt;Le « &lt;a href=&quot;https://en.wikipedia.org/wiki/Reverse_DNS_lookup&quot;&gt;Reverse&lt;/a&gt; », parfois nommé « PTR », est une résolution DNS inverse. De la même façon qu'une résolution DNS permet de passer d'un nom de domaine à une adresse IP, le DNS inverse permet de passer d'une adresse IP à un nom de domaine. Ce mécanisme existe aussi bien pour IPv4 que pour IPv6.&lt;/p&gt;

&lt;p&gt;Si votre fournisseur de service (la personne chez qui vous louez les IPs ou les serveurs) ne vous permet pas de changer le Reverse, changez de prestataire immédiatement ! L'envoi d'un mail à partir d'une adresse IP sans Reverse est souvent rédhibitoire pour le serveur mail de destination (pas de reverse, pas de livraison).&lt;/p&gt;

&lt;p&gt;De plus, votre Reverse doit être consistant :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;L'adresse IP doit résoudre vers un domaine, et ce même domaine doit résoudre vers l'adresse IP.&lt;/li&gt;
	&lt;li&gt;Le serveur mail doit également fournir son nom de domaine principal dans le processus de négociation, et ce nom doit résoudre correctement vers son IP. Réglez donc les &lt;strong&gt;/etc/hostname&lt;/strong&gt; ; &lt;strong&gt;/etc/mailname&lt;/strong&gt; et &lt;strong&gt;myhostname&lt;/strong&gt; (pour Postfix) correctement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Une inconsistance à un quelconque niveau est pire qu'une absence de reverse : le serveur de destination considérera qu'il y a peut-être usurpation de l'IP.&lt;/p&gt;

&lt;p&gt;Encore une fois, n'oubliez pas de régler aussi le reverse IPv6 si vous utilisez IPv6 sur votre serveur.&lt;/p&gt;

&lt;h3&gt;Postmaster, Hostmaster, et RFC&lt;/h3&gt;

&lt;p&gt;Certains serveurs mails sont un peu soupe au lait. Par exemple, il peut arriver que votre réputation descende en flèche juste parce que le propriétaire du serveur n’a pas de moyen automatisé de vous contacter.&lt;/p&gt;

&lt;p&gt;J’explique : dans les &lt;a href=&quot;https://fr.wikipedia.org/wiki/Request_for_comments&quot;&gt;RFC&lt;/a&gt; (Request For Comment, la base des normes et protocoles sur Internet), il est prévu qu’un serveur mail émettant du courrier possède des adresses particulières, à savoir &lt;a href=&quot;mailto:postmaster@ledomaine.com&quot;&gt;postmaster@ledomaine.com&lt;/a&gt; et &lt;a href=&quot;mailto:hostmaster@ledomaine.com&quot;&gt;hostmaster@ledomaine.com&lt;/a&gt; permettant de recevoir les mails envoyés automatiquement par ses pairs.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;postmaster&lt;/strong&gt; recevra principalement les plaintes pour SPAM, notification de traffic inhabituel sur les mails, et autres requêtes relatives aux mails&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;hostmaster&lt;/strong&gt; recevra les mails relatifs à la gestion du nom de domaine lui-même (demandes de transfert, contact légal du propriétaire - même si on préfère souvent écrire aux contacts du whois), ou parfois pour la réservation d’un certificat SSL (vérification de la propriété du nom de domaine avant délivrance automatique du certificat).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L’absence d’une adresse postmaster@ valide sur votre serveur vous fait donc paraître pour le serveur mail de destination comme un spammeur qui n’a même pas pris la peine d’implémenter correctement le protocole mail.&lt;/p&gt;

&lt;p&gt;A noter qu’un alias de postmaster@&amp;nbsp;vers une adresse de votre choix fonctionne aussi, même si cette adresse est un trou noir. Mais vous ne devriez pas ignorer les notifications automatiques de blocage et de plaintes envoyées à postmaster…&lt;/p&gt;

&lt;p&gt;De la même façon, préférez un logiciel de serveur mail respectueux des standards (Postfix, Exim) au tout-dernier-serveur-mail-a-la-mode, dont les réponses ne sont peut-être pas entièrement conformes aux RFC.&lt;/p&gt;

&lt;h3&gt;Limites&lt;/h3&gt;

&lt;p&gt;Là on touche au grand dilemme du fournisseur de mails en serveur mutualisé : offrir plus de possibilités aux utilisateurs, ou se protéger contre les usages abusifs ?&lt;/p&gt;

&lt;p&gt;Concrètement, imaginons qu’un de vos utilisateurs décide d’envoyer de la publicité aux 500 adresses mail de sa liste de contacts. Les serveurs recevant un tel volume de messages d’un seul coup ne vont peut-être pas apprécier ce trafic non sollicité et encombrant (de la pub ? du SPAM ? Paf, bloqué).&lt;/p&gt;

&lt;p&gt;Pire : imaginez qu’un de vos utilisateurs se fasse pirater sa boîte mail, et devienne un émetteur de SPAM ou de virus à partir de votre serveur mail ? Vous pensez que les serveurs de destinations seront compréhensifs s’ils reçoivent des centaines de mails par seconde provenant de votre serveur mail ? Ils ne chercheront pas à comprendre : paf, bloqué.&lt;/p&gt;

&lt;p&gt;La solution dans un premier temps c’est de limiter le nombre de mails envoyés par votre serveur, par adresse et par jour. Chaque utilisateur ne devrait par exemple envoyer que 300 mails par jour. Au-delà, le compte sera bloqué en attendant que l’on détermine si c’est une utilisation légitime ou non. La limite est bien entendu à calibrer selon les utilisateurs et les services que vous voulez offrir.&lt;/p&gt;

&lt;p&gt;Il existe plusieurs solutions pour implémenter ce comportement, voici la mienne : &lt;a href=&quot;https://github.com/mpellegrin/ratelimit-policyd&quot;&gt;github.com/mpellegrin/ratelimit-policyd&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Diminuer la vitesse d’envoi&lt;/h3&gt;

&lt;p&gt;Ça peut paraître un comble au moment où l’on veut recevoir les informations le plus vite possible, et pourtant c’est souvent nécessaire pour l’envoi de mails. Afin d’éviter d’envoyer trop vite un grand volume de mail d’un coup, il peut être nécessaire de mettre en place une limite de mails sortants par seconde et par domaine de destination. Ainsi, le serveur mail de destination ne sera pas inondé sous le poids des mails à traiter, et sera plus coopératif pour les recevoir (en résumé : il ne vous bloquera pas pour usage abusif de sa bande passante).&lt;/p&gt;

&lt;p&gt;La mitigation du taux d’envoi peut être faite au moyen de simples paramètres pour le serveur mail &lt;a href=&quot;http://steam.io/2013/04/01/postfix-rate-limiting/&quot;&gt;steam.io/2013/04/01/postfix-rate-limiting/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;DKIM et SPF&lt;/h3&gt;

&lt;p&gt;Avoir un enregistrement &lt;a href=&quot;https://fr.wikipedia.org/wiki/Sender_Policy_Framework&quot;&gt;SPF&lt;/a&gt; valide pour le domaine avec lequel vous envoyez vos mails est pratiquement obligatoire : non seulement cela vous permettra de confirmer que le serveur qui envoie vos mails y est bien autorisé, mais cela vous protégera (un peu) contre les usurpations d'adresses mail. Un exemple de SPF serait :&lt;/p&gt;

&lt;pre&gt;
v=spf1 +a +mx -all&lt;/pre&gt;

&lt;p&gt;Si vous voulez un effet positif maximal, préférez un réglage strict (&quot;-all&quot;) au réglage de debug (&quot;?all&quot;), quitte à élargir votre jeu de règles en insérant toutes vos IPs. Par contre, ne mettez pas un TTL trop haut sur les enregistrements SPF, on ne sait jamais.&lt;/p&gt;

&lt;p&gt;Attention également, pour configurer votre domaine, &lt;a href=&quot;https://mxtoolbox.com/problem/spf/spf-record-deprecated&quot;&gt;le champ de type &quot;SPF&quot; est obsolète&lt;/a&gt;, utilisez un champ de type TXT pour vos enregistrements SPF.&lt;/p&gt;

&lt;p&gt;En complément au mécanisme SPF, parce que le SPF n'est pas toujours suffisant pour assurer au serveur de destination que le mail est légitime, vous pouvez mettre en place le &lt;a href=&quot;https://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail&quot;&gt;DKIM&lt;/a&gt; pour tous vos mails sortants. La configuration est plus complexe, mais elle vaut largement le coup pour vous faire sortir de l'ornière d'une réputation trop faible de votre adresse IP dans les premiers mois.&lt;/p&gt;

&lt;p&gt;Le principe du DKIM c'est d'ajouter une signature aux mails, cette signature étant calculée à partir d'une clef privée. La clef publique est quant à elle publiée dans un enregistrement TXT dans le nom de domaine, permettant au serveur recevant le mail de vérifier la validité de la signature, et donc la légitimité du message envoyé à partir du nom de domaine.&lt;/p&gt;

&lt;h3&gt;Smarthosts&lt;/h3&gt;

&lt;p&gt;Si finalement tout ce dont j'ai parlé plus haut n'a pas fonctionné, et que vous vous êtes fait bloquer sur le réseau d'un des grands fournisseurs de boîtes mail (Google, Microsoft, yahoo...), voici votre dernier recours.&lt;/p&gt;

&lt;p&gt;Outre changer d'adresse IP, ce qui pose souvent d'autres problèmes, votre solution c'est d'utiliser un Smarthost. Le Smarthost, c'est tout simplement un serveur mail qui transfère des mails. C'est ce que l'on appelle aussi un relay mail, qui va renvoyer tous vos mails à la place de votre serveur bloqué.&lt;/p&gt;

&lt;p&gt;Dans l'idéal vous devriez avoir plusieurs smarthosts, pour pouvoir répartir la charge de traitement, et les échanger lorsque l'adresse IP de l'un d'eux se fait bloquer. Ainsi vous ne touchez pas à vos MX, et vous avez un réseau permettant de faire sortir des mails indépendemment de votre réseau de réception.&lt;/p&gt;

&lt;p&gt;Le routage vers le Smarthost se règle très simplement dans Postfix, &lt;a href=&quot;http://postfix.traduc.org/index.php/STANDARD_CONFIGURATION_README.html&quot;&gt;en utilisant la directive &lt;strong&gt;transport_maps&lt;/strong&gt; de Postfix&lt;/a&gt; et en configurant un second serveur mail (le smarthost) en mode Relay.&lt;/p&gt;

&lt;p&gt;Attention cependant au moment de créer votre smarthost à ne pas créer de configuration en &quot;Open Relay&quot;, qui permettrait à n'importe qui d'envoyer des mails à travers le smarthost, la sentence sera immédiate lorsque des spammeurs s'en apercevront. Réglez bien votre &lt;strong&gt;mynetwork&lt;/strong&gt;, et &lt;strong&gt;sender_restrictions&lt;/strong&gt; (&lt;a href=&quot;http://www.postfix.org/SMTPD_ACCESS_README.html#global&quot;&gt;par exemple avec Postfix&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;Pour aller plus loin&lt;/h3&gt;

&lt;p&gt;Voici une liste d'outils assez pratique lorsque l'on configure ou que l'on cherche la cause d'un problème de délivrance sur un serveur mail :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.mail-tester.com/&quot;&gt;Mail Tester&lt;/a&gt; (indispensable pour vérifier votre configuration)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://mxtoolbox.com&quot;&gt;MXToolbox&lt;/a&gt; (le couteau suisse des tests sur les serveurs mails)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://support.google.com/mail/answer/81126?hl=fr&quot;&gt;Quelques conseils de Google&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quelques liens pour (essayer de) se faire retirer de la Blocklist :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://postmaster.live.com/snds/index.aspx&quot;&gt;Pour se faire dé-bannir par Microsoft&lt;/a&gt; (sans garanties...)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://support.google.com/mail/contact/bulk_send_new?hl=en&amp;amp;rd=1&quot;&gt;Pour se faire dé-bannir par Google&lt;/a&gt; (sans garanties)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://help.yahoo.com/l/us/yahoo/mail/postmaster/bulkv2.html&quot;&gt;Pour se faire débannir par Yahoo&lt;/a&gt; (sans garanties)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://postmaster.aol.com/whitelist-request&quot;&gt;Pour se faire débannir par AOL&lt;/a&gt; (sans garanties)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les programmes de monitoring de réputation :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://postmaster.google.com&quot;&gt;Google Postmaster Tools&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://sendersupport.olc.protection.outlook.com/pm/services.aspx&quot;&gt;Services de Microsoft&lt;/a&gt;, dont :
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;https://sendersupport.olc.protection.outlook.com/snds/&quot;&gt;Outlook.com Smart Network Data Services (SNDS)&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;https://sendersupport.olc.protection.outlook.com/snds/JMRP.aspx&quot;&gt;Junk Mail Report Program (JMRP)&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://help.yahoo.com/kb/postmaster/sign-manage-yahoo-complaint-feedback-loop-program-sln3438.html?guce_referrer=aHR0cHM6Ly9oZWxwLnlhaG9vLmNvbS9rYi9wb3N0bWFzdGVyLz9ndWNlX3JlZmVycmVyPWFIUjBjSE02THk5M2QzY3VjWGRoYm5RdVkyOXRMdyZndWNlX3JlZmVycmVyX3NpZz1BUUFBQUxFa3d6SjZia2U1LWgtOHExaWtkd3prNmJYUFRtdV81bDZHcVlWbHBjcVVNNm5PNDRlRDZFN0F0TmtjdjlUTmxJSHE0RWlJTC0tbjgteGRyNjVueXEyZUdnQmFrYlFhWjdKa0hLbzg5cFlZdVRoS19waFRfZG9qWFkxaFV0NnlUakhYMW5sZEdhY0J2ZTZwNzFmaUdvdTkxS2U2YkRXLXJBdzhjSjJhT1FiQiZfZ3VjX2NvbnNlbnRfc2tpcD0xNTk3MTg3Mzk3&amp;amp;guce_referrer_sig=AQAAADXcyLkhrnEIWxifEsj79itT56DobcqMVN0QwUcHJzVyohNuP5BfaUg_mtqZ60g_-s7a_L2QHy7IwWqA9NHXmzTnBFSmAGIBh67-9hFpKz63Kb3ojU1XzLWuHWKK1YQiwWZiJogj1Ij6bYWhR2o8cu8--JvB2O9XEoIv8oh2w2US&amp;amp;_guc_consent_skip=1597187419&quot;&gt;Yahoo Complaint Feedback Loop (CFL)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
        
              </item>
          <item>
        <title>Configurer un backup incrémental avec duplicity, rsync, et backupninja sous Debian</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2015/02/21/Configurer-un-backup-incr%C3%A9mental-avec-duplicity%2C-rsync%2C-et-backupninja-sous-Debian</link>
        <guid isPermaLink="false">urn:md5:53eb9484898eb5bb3e1f00820c261548</guid>
        <pubDate>Tue, 09 Jun 2015 14:37:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Hacks</category>
                          <category>backup</category>
                  <category>backupninja</category>
                  <category>debian</category>
                  <category>serveur</category>
                <description>&lt;p&gt;&lt;a class=&quot;ref-post&quot; href=&quot;https://uname.pingveno.net/blog/index.php/post/2015/02/17/Set-up-files-and-database-incremental-backup-with-duplicity%2C-rsync%2C-and-backupninja-on-Debian&quot;&gt;English version&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Introduction&lt;/h3&gt;

&lt;p&gt;Si vous savez ce qu'est un backup, vous devriez savoir qu'il y a plusieurs types de backups :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Un backup complet copie tous les fichiers, en espérant que votre disque de backup soit assez grand pour accueillir plus d'un backup.&lt;/li&gt;
	&lt;li&gt;Un backup incrémental commence par faire un backup complet, puis les fois suivantes n'enregistre que les &quot;différences&quot; sur les fichiers modifiés.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Évidemment, un backup complet est plus simple à restaurer, puisque ce sont les fichiers, et rien que les fichiers ; alors que le backup incrémental a un format de fichier spécial lui permettant de représenter les &quot;diffs&quot; à chaque sauvegarde. Mais considérant le gain d'un backup incrémental en bande passante, vitesse, et espace disque , votre solution pour un backup régulier devrait être le backup incrémental.&lt;/p&gt;

&lt;h3&gt;Les outils&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Duplicity&lt;/strong&gt; est un logiciel libre similaire à rdiff-backup. Duplicity permet de créer un backup incrémental. Duplicity peut également chiffrer les fichiers, pour pouvoir les envoyer en toute sécurité sur un service de stockage distant. Dans une configuration classique, Duplicity est utilisé conjointement avec rsyc pour optimiser les temps de transfert vers le stockage distant, mais vous pouvez très bien utiliser un disque de stockage local, un serveur FTP, ou un cloud Amazon E3 pour y envoyer vos sauvegardes. Comme le titre l'indique, dans cet exemple j'utiliserai rsync.&lt;/p&gt;

&lt;p&gt;Et les bases de données ? Les bases de données ne peuvent pas être sauvegardées simplement en copiant les fichiers de données, car cela peut provoquer une corruptio&amp;nbsp; de données, et vous aurez des bases inutilisables dans vos sauvegardes. Il nous faudrait donc un script qui dump toutes les bases de données avant de sauvegarder ces fichiers de dump via notre méthode de sauvegarde préférée.&lt;/p&gt;

&lt;p&gt;Bonne nouvelle : &lt;strong&gt;backupninja&lt;/strong&gt; sait faire tout cela. Backupninja est une sorte de &quot;backup-master&quot; : il est capable de récupérer des données depuis différentes sources (fichiers, bases de données...) et les envoyer à différentes destinations (backup simple, duplicity...), il suffit juste d'écrire les fichiers de configuration correspondants !&lt;/p&gt;

&lt;p&gt;Dans cet exemple, nous utiliserons donc backupninja pour récupérer nos fichiers et nos bases de données, et les envoyer pour un backup incrémental Duplicity, stocké sur un serveur SSH distant, en utilisant rsync.&lt;/p&gt;

&lt;p&gt;C'est parti !&lt;/p&gt;          &lt;h3&gt;Pré-requis&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;Une machine sous Debian que nous allons backuper, appelons-la &lt;strong&gt;production&lt;/strong&gt;

	&lt;ul&gt;
		&lt;li&gt;Un serveur de backup avec accès SSH (SSH est requis pour rsync mais vous pourriez avoir un simple serveur FTP), appelons-la &lt;strong&gt;backup&lt;/strong&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Savoir modifier des fichiers de configuration et relancer un service&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Configurez le compte sur le serveur de backup&lt;/h3&gt;

&lt;p&gt;Pour pouvoir envoyer les sauvegardes vers le serveur &lt;strong&gt;backup&lt;/strong&gt; via rsync, nous avons besoin de nous identifier sur ce serveur à partir de &lt;strong&gt;production&lt;/strong&gt; sans spécifier de mot de passe.&lt;/p&gt;

&lt;p&gt;Tout d'abord, travaillons en root sur &lt;strong&gt;production&lt;/strong&gt; : &lt;code&gt;sudo -s&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Créez les clef SSH pour root : &lt;code&gt;ssh-keygen -t rsa&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Après avoir tapé la commande précédente, la clef publique va s'installer dans &lt;code&gt;/root/.ssh/id_rsa.pub&lt;/code&gt; et la clef privée dans &lt;code&gt;/root/.ssh/id_rsa&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;À présent, considérons &lt;strong&gt;backup&lt;/strong&gt;, vérifiez que votre serveur SSH sur &lt;strong&gt;backup&lt;/strong&gt; accepte l'authentification par clefs privées. Dans le fichier &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;, les lignes suivantes doivent apparaître (non commentées) :&lt;/p&gt;

&lt;pre&gt;
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     %h/.ssh/authorized_keys&lt;/pre&gt;

&lt;p&gt;Sinon, ajoutez-les et relancez le service ssh.&lt;/p&gt;

&lt;p&gt;Maintenant, ajoutez l'utilisateur prod_server sur &lt;strong&gt;backup&lt;/strong&gt; : &lt;code&gt;useradd prod_server&lt;/code&gt;&lt;br /&gt;
Vous pourriez avoir envie changer son dossier home, je suppose que vous savez comment le faire.&lt;/p&gt;

&lt;p&gt;Retour sur &lt;strong&gt;production&lt;/strong&gt;, copiez la clef publique dans le fichier /home/prod_server/.ssh/authorized_keys de &lt;strong&gt;backup&lt;/strong&gt;.&lt;br /&gt;
La méthode bourrin : &lt;code&gt;scp /root/.ssh/id_rsa.pub root@backup:/home/prod_server/.ssh/authorized_keys&lt;/code&gt;&lt;br /&gt;
La méthode gentlemen : copiez-collez le contenu de &lt;code&gt;&lt;strong&gt;production:&lt;/strong&gt;/root/.ssh/id_rsa.pub&lt;/code&gt; à la fin du fichier &lt;code&gt;&lt;strong&gt;backup:&lt;/strong&gt;/home/prod_server/.ssh/authorized_keys&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Si vous avez tout fait correctement, vous devriez pouvoir vous connecter en ssh depuis votre compte root de &lt;strong&gt;production&lt;/strong&gt; sur le compte prod_server de &lt;strong&gt;backup&lt;/strong&gt; sans spécifier de mot de passe.&lt;/p&gt;

&lt;h3&gt;Installez backninja (et ses amis)&lt;/h3&gt;

&lt;p&gt;Sur &lt;strong&gt;production&lt;/strong&gt;, entrez la commande : &lt;code&gt;sudo apt-get install backupninja duplicity rsync&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Configurez le dump des bases de données&lt;/h3&gt;

&lt;p&gt;C'est parti, configurons &lt;strong&gt;backupninja&lt;/strong&gt; !&lt;/p&gt;

&lt;p&gt;Pour MySQL, copiez le fichier d'exemple à partir de &lt;code&gt;/usr/share/doc/backupninja/examples/example.mysql&lt;/code&gt; dans le dossier &lt;code&gt;/etc/backup.d/10-alldb.mysql&lt;/code&gt; et modifiez-le pour vos propres besoins (le fichier est simple et bien commenté).&lt;/p&gt;

&lt;pre&gt;
databases   = all
backupdir   = /var/backups/mysql
hotcopy     = no
sqldump     = yes
compress    = yes
configfile = /etc/mysql/debian.cnf&lt;/pre&gt;

&lt;p&gt;Pour PostgreSQL, même chose ! Copiez le fichier &lt;code&gt;/usr/share/doc/backupninja/examples/example.mysql&lt;/code&gt; dans le dossier &lt;code&gt;/etc/backup.d/10-alldb.pgsql&lt;/code&gt; et modifiez les valeurs souhaitées.&lt;/p&gt;

&lt;pre&gt;
backupdir = /var/backups/postgres
databases = all
compress = yes
format = plain&lt;/pre&gt;

&lt;p&gt;Pourquoi est-ce que j'utilise le préfixe &lt;code&gt;10-&lt;/code&gt; au début de mes fichiers ? Pour la même raison pour laquelle vous préfixez vos fichiers de configuration Nginx : pour gérer l'ordre de lecture. J'ai besoin de créer les dumps des bases de données avant de créer le backup des fichiers, sinon Duplicity enregistrera les fichiers de la veille, et les fichiers que nous venons de créer devront attendre le lendemain pour être sauvegardés ! Donc, les fichiers de configuration qui vont créer les dumps seront préfixé par &lt;code&gt;10- &lt;/code&gt;et les fichiers pour configurer le backup incrémental de Duplicity seront préfixés par &lt;code&gt;20-, par exemple&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Les dumps SQL seront stockés dans &lt;code&gt;/var/backups/&lt;/code&gt; selon ma configuration actuelle.&lt;/p&gt;

&lt;h3&gt;Configuration de Duplicity pour le backup incrémental&lt;/h3&gt;

&lt;p&gt;Comme tout à l'heure, copiez le fichier d'exemple : &lt;code&gt;cp /usr/share/doc/backupninja/examples/example.dup &lt;/code&gt;&lt;code&gt;/etc/backup.d/20-files.dup&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Et modifiez les valeurs, en particulier la valeur desturl :&lt;/p&gt;

&lt;pre&gt;
# Disable testconnect because we use desturl
testconnect = no

# You may change this if you are a partition-maniac
tmpdir = /tmp

[gpg]
# Using symetric encryption for archive files
# Note that an encryption method is mandaory, either with symetric or private keys
# Don't forget to note that password somewhere !
password = whateveryouwant

[source]
# Specify the paths to your files
include = /var/spool/cron/crontabs
include = /var/log
include = /var/mail
include = /var/www
include = /etc
include = /root
include = /home
include = /usr/local

# And to your database dumps !
include = /var/backups/mysql
include = /var/backups/postgresql

# There are some files we don't need
# Don't forget to add the tmpdir in the exclude list, if it was included in the previous paths !
exclude = /home/*/.gnupg
exclude = /var/cache/backupninja/duplicity
exclude = /tmp

[dest]
# Adjust these to your own taste
incremental = yes
increments = 15
keep = 30
keepincroffulls = all

# Specify the backup server crendentials
## desturl = file:///usr/local/backup
## desturl = rsync://user@other.host//var/backup/bla
## desturl = s3+http://
## desturl = ftp://myftpuser@ftp.example.org/remote/ftp/path
&lt;strong&gt;desturl = rsync://prod_server@backup//home/prod_server/data&lt;/strong&gt;

# Only if you choose FTP
# ftp_password = whateveryouwant&lt;/pre&gt;

&lt;p&gt;Cette configuration utilise un chiffrement symétrique pour les archives sauvegardées. Si vous voulez mettre en place un chiffrement asymétrique, vous pouvez &lt;a href=&quot;https://wiki.debian.org/Duplicity&quot;&gt;lire la documentation&lt;/a&gt; et adapter la configuration.&lt;/p&gt;

&lt;h3&gt;Configurez la fréquence des backups&lt;/h3&gt;

&lt;p&gt;Vous avez peut-être remarqué que backupninja a créé un cronjob dans &lt;code&gt;/etc/cron.d/backupninja&lt;/code&gt; mais si vous ouvrez ce fichier, vous constaterez que le cronjob est lancé toutes les heures. Pourquoi ? Parce que le cronjob n'est utilisé que pour lancer le backup, qui vérifie si une mise à jour du backup est nécessaire avant de lancer réellement l'opération de backup. Pour modifier les heures et la fréquence des mises à jour, vous pouvez modifier le fichier &lt;code&gt;/etc/backupninja.conf&lt;/code&gt; :&lt;/p&gt;

&lt;pre&gt;
when = everyday at 01:00&lt;/pre&gt;

&lt;p&gt;Ajustez la valeur selon vos souhaits. Vous pouvez combiner plusieurs lignes, si vous voulez plusieurs dates de démarrage (&lt;a href=&quot;https://labs.riseup.net/code/issues/577&quot; hreflang=&quot;en&quot;&gt;en savoir plus&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;Démarrez votre backup, et vérifiez son bon fonctionnement&lt;/h3&gt;

&lt;p&gt;C'est le moment de démarrer votre backup pour la première fois ! Si vous ne voulez pas attendre une heure pour que le cron se lance, vous pouvez lancer le backup immédiatement avec la commande &lt;code&gt;backupninja -d -n&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Si aucune erreur ne s'affiche pendant l'exécution, bravo ! Vous venez de configurer backupninja avec succès !&lt;/p&gt;

&lt;p&gt;À présent, contrôlons que notre backup est bien arrivé : connectez-vous à &lt;strong&gt;backup&lt;/strong&gt; et listez le fichiers dans le dossier &lt;code&gt;/home/prod_server/data/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Vous devriez voir les fichiers d'index créés par Duplicity, vous ne pouvez pas les ouvrir sans utiliser quelques commandes :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Afficher le statut des &quot;collections&quot; : &lt;strong&gt;duplicity collection-status file:///home/prod_server/data&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;Lister les fichiers dans l'archive : &lt;strong&gt;duplicity list-current-files file:///home/prod_server/data&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;Restaurer le dernier backup dans un dossier précis &lt;strong&gt;duplicity restore file:///home/prod_server/data/ /home/prod_server/test-restore/&lt;/strong&gt; (si vous ne voyez des erreurs mais que les fichiers sont bien présents à la fin de l'exécution de la commande, c'est parce que Duplicity essaye de restaurer les atributs &quot;prorpiétaire&quot; des fichiers, et qu'il ne peut pas le faire si vous n'avez pas lancé la commande en root).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vous devez avoir le programme Duplicity installé sur le serveur &lt;strong&gt;backup&lt;/strong&gt;&amp;nbsp; pour pouvoir utiliser ces commandes en mode shel sur &lt;strong&gt;backup&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Vous pouvez aussi lancer ces commandes sur le serveur &lt;strong&gt;production&lt;/strong&gt; et accéder aux backups stockés sur &lt;strong&gt;backup&lt;/strong&gt; en utilisant la &lt;em&gt;desturl&lt;/em&gt; que vous avez configurée au lieu du préfixe&amp;nbsp;&lt;code&gt;file://&lt;/code&gt; que vous utilisez quand vous lancez la commande sur &lt;strong&gt;backup&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Vous devriez maintenant être capables d'implémenter une solution complète de backup en utilisant backupninja.&lt;/p&gt;

&lt;p&gt;J'espère que cet article vous a été utile, vous pouvez rédiger un commentaire via le formulaire ci-dessous si vous rencontrez des problèmes avec cette documentation.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Un serveur au régime : faites tourner un serveur complet dans un mouchoir de poche</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/11/26/Un-serveur-au-r%C3%A9gime-%3A-faites-tourner-un-serveur-complet-dans-un-mouchoir-de-poche</link>
        <guid isPermaLink="false">urn:md5:e5d93e067cbe67fe57aa1cd33137909c</guid>
        <pubDate>Mon, 25 Nov 2013 07:15:00 +0100</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Hacks</category>
                          <category>apache</category>
                  <category>debian</category>
                  <category>exim</category>
                  <category>inetd</category>
                  <category>lighttpd</category>
                  <category>linux</category>
                  <category>mysql</category>
                  <category>nginx</category>
                  <category>postgresql</category>
                  <category>serveur</category>
                  <category>sqlite</category>
                  <category>ssmtp</category>
                  <category>swap</category>
                  <category>vsftpd</category>
                <description>          &lt;h3&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Ce n&amp;#8217;est pas la période pour les régimes et pourtant aujourd&amp;#8217;hui,
dans un billet volontairement cryptique aux
non-initiés, je vais vous dévoiler les quelques secrets qui permettent à
des nerds invétérés de donner vie à des machines ridiculement pauvres
en RAM. Pour la beauté du geste, mais pas que.&lt;/p&gt;
&lt;p&gt;Je me souviens que l&amp;#8217;on s&amp;#8217;est souvent moqué de moi quand je disais
qu&amp;#8217;avec 512&amp;#160;mégas de RAM on pouvait faire tourner un serveur complet
mail+ftp+web+sql. En remplaçant quelques programmes, vous pouvez parfaitement faire
tourner votre application web standalone, un noeud de CDN performant, un
miroir FTP, ou un relais mail.&lt;/p&gt;
&lt;p&gt;Cet article va simplement vous présenter des alternatives, et terminer avec quelques astuces plus générales. Le but est de remplacer notre célèbre LAMP par des solutions moins gourmandes en mémoire.&lt;/p&gt;
&lt;h3&gt;Remplacer Apache&lt;/h3&gt;
&lt;p&gt;Pour remplacer &lt;strong&gt;Apache&lt;/strong&gt;, nous avons le choix entre &lt;strong&gt;Nginx&lt;/strong&gt; et &lt;strong&gt;Lighttpd&lt;/strong&gt; (&lt;em&gt;Lighty&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lighttpd&lt;/strong&gt; est le serveur le plus léger au monde. Sa structure est très simple, et l&amp;#8217;impact d&amp;#8217;une connexion en mémoire est très faible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nginx&lt;/strong&gt; est un serveur qui consomme un peu plus au démarrage, mais qui utilise une gestion intelligente de ses connexions ouvertes pour optimiser son impact mémoire.&lt;/p&gt;
&lt;p&gt;Inconvénients&amp;#160;: oubliez les &lt;code&gt;.htaccess&lt;/code&gt;, préparez-vous à faire un peu de configuration pour remplacer votre &amp;#8220;&lt;code&gt;a2enmod php5&lt;/code&gt;&amp;#8221;, et changez vos habitudes pour redémarrer les services.&lt;/p&gt;
&lt;h3&gt;Remplacer MySQL&lt;/h3&gt;
&lt;p&gt;Ce n&amp;#8217;est pas facile de remplacer MySQL, tellement le nombre de programme qui en dépendent est conséquent. Cependant, si c&amp;#8217;est possible, n&amp;#8217;hésitez pas une seconde, voici les deux alternatives &amp;#8220;lowcost&amp;#8221; possibles&amp;#160;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SQLite&lt;/strong&gt;&amp;#160;: une base SQLite est simplement un fichier qui est chargé en mémoire au moment où l&amp;#8217;on veut lire dedans. Pas de démon résident, pas d&amp;#8217;impact lorsque la base est inactive. Par contre, préparez vous à attendre un peu si votre base est conséquente&amp;#160;: lire des données en n&amp;#8217;utilisant que le cache disque,&amp;nbsp; ça peut prendre du temps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&amp;#160;: PostgreSQL est un peu le nouveau MySQL, mais en mieux. de faible impact mémoire au démarrage, doté de plus de fonctionnalités que MySQL et proposant de meilleures performances, il reste encore marginal mais a tout pour concurrencer les équivalents propriétaires comme Oracle. On peut l&amp;#8217;utiliser dans un environnement limité, en configurant correctement les limites dans sa configuration.&lt;/p&gt;
&lt;h3&gt;Remplacer ProFTPd&lt;/h3&gt;
&lt;p&gt;Si vous proposez un hébergement, vous proposerez certainement un serveur FTP.&lt;/p&gt;
&lt;p&gt;Si les utilisateurs du serveur sont des utilisateurs &amp;#8220;de confiance&amp;#8221; (ie&amp;#160;: que vous connaissez), vous pouvez leur laisser utiliser le serveur &lt;strong&gt;SFTP&lt;/strong&gt; fourni par le serveur SSH (à activer dans la configuration). De très faible impact mémoire, pour une meilleure sécurité et moins de configuration, le protocole SFTP est supporté par la majorité des clients FTP. C&amp;#8217;est LA solution des flemmards pour mettre en place un serveur FTP.&lt;/p&gt;
&lt;p&gt;Sinon, vous pouvez vous rabattre sur un &lt;strong&gt;VSFTPd&lt;/strong&gt;, qui en plus de vous combler au niveau impact mémoire, vous comblera au niveau rapidité. Il gère aussi le &lt;strong&gt;FTPS&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Remplacer Postfix&lt;/h3&gt;
&lt;p&gt;Si vous n&amp;#8217;utilisez pas la réception des mails et que vous ne faites que de l&amp;#8217;envoi (avec ou sans smarthost), &lt;strong&gt;Exim&lt;/strong&gt; vous comblera au moins autant que Postfix, vous proposant même sous Debian une interface de configuration &amp;#8220;pour les nuls&amp;#8221;&amp;#160;: &lt;code&gt;dpkg-reconfigure exim4-config&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Éviter la catastrophe&lt;/h3&gt;
&lt;p&gt;En cas de gonflement inattendu de la mémoire, et lorsque celle-ci commence à manquer, le système d&amp;#8217;exploitation commence à sacrifier des programmes pour libérer de la RAM. C&amp;#8217;est dommage, on aimerait éviter d&amp;#8217;en arriver à de telles extrémités sur un serveur de production.&lt;/p&gt;
&lt;p&gt;La solution est assez simple, bien qu&amp;#8217;imparfaite&amp;#160;: il suffit de rajouter de la SWAP. La SWAP est un fichier d&amp;#8217;échange placé sur le disque dur, lorsque il n&amp;#8217;y a plus de mémoire en RAM, une partie de la RAM est déchargée (ie copiée) sur la SWAP, pour laisser de la place aux programmes &amp;#8220;actifs&amp;#8221;. Bien entendu, cette mémoire déchargée devra être rechargée dès lors qu&amp;#8217;un programme a besoin d&amp;#8217;un bloc mémoire qui a été placé en SWAP, ralentissant le traitement à la vitesse des temps d&amp;#8217;accès disque (pas cool).&lt;/p&gt;
&lt;h3&gt;Faire dormir tout le monde&lt;/h3&gt;
&lt;p&gt;Ce qui est pénible avec les serveurs, c&amp;#8217;est la quantité de RAM qui est là, utilisée en permanence, pour finalement un seul pic d&amp;#8217;utilisation. Si on pouvait récupérer la RAM des programmes qui n&amp;#8217;interagissent pas avec l&amp;#8217;extérieur, et ne les lancer que quand on en a besoin&amp;#160;? &lt;strong&gt;Inetd&lt;/strong&gt; est fait pour ça&amp;#160;!&lt;/p&gt;
&lt;p&gt;Inetd c&amp;#8217;est un &amp;#8220;super démon&amp;#8221; qui va écouter sur les ports demandés à la place des programmes, et qui va lancer les programmes pour traiter l&amp;#8217;événement, dès lors qu&amp;#8217;une connexion est ouverte sur un de ses ports d&amp;#8217;écoute. On peut donc imaginer avoir un Lighttpd non lancé qui se fait réveiller lorsque Inetd reçoit une connexion sur le port 80. Lighttpd traite alors la requête et s&amp;#8217;arrête immédiatement après, laissant la place pour d&amp;#8217;autres programmes.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;inconvénient ici vient des temps de traitement forcément plus longs qu&amp;#8217;avec des démons résidents (démarrer le programme prend du temps).&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Voilà, c&amp;#8217;est à peu près tout, j&amp;#8217;espère qu&amp;#8217;avec ces petits changements dans votre configuration, vous aurez quelques pistes pour alléger votre serveur, si jamais l&amp;#8217;expérience vous tente. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Le monitoring sous Debian avec Nagios et Munin (Puppet en guest star) : de A à Z - Partie 5 : NSCA</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/10/13/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-5-%3A-NSCA</link>
        <guid isPermaLink="false">urn:md5:d2d96dc10b8ab7767c5eb69d1a427fdf</guid>
        <pubDate>Sun, 13 Oct 2013 16:04:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>debian</category>
                  <category>guide</category>
                  <category>monitoring</category>
                  <category>munin</category>
                  <category>nagios</category>
                  <category>nsca</category>
                  <category>serie-monitoring-nagios-munin-puppet</category>
                  <category>serveur</category>
                <description>&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt; &amp;#8212; &lt;a href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/08/19/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-4-%3A-Munin&quot; rel=&quot;prev&quot;&gt;Voir l&amp;#8217;article précédent&amp;#160;: Munin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cet article est le dernier de la série.&lt;/p&gt;
&lt;p&gt;Dans l&amp;#8217;article précédent, nous avons vu comment configurer Munin pour qu&amp;#8217;il collecte des données et affiche ses graphes. Il nous reste à présent à configurer la communication entre Munin et Nagios, grâce à l&amp;#8217;agent NSCA.&lt;/p&gt;          &lt;h3&gt;Introduction&lt;/h3&gt;
&lt;h4&gt;Tests passifs, tests actifs&lt;/h4&gt;
&lt;p&gt;Nagios distingue deux type de tests à effectuer sur les hôtes, par le biais de ses déclarations de services&amp;#160;: les tests actifs et les tests passifs.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Les &lt;strong&gt;tests actifs&lt;/strong&gt; sont les tests réalisés par Nagios via un de ses plugins&amp;#160;: ça peut être le test d&amp;#8217;un port ou le contrôle de la réponse d&amp;#8217;un service. Ces tests sont synchrones (effectués à intervalle fixe).&lt;/li&gt;
&lt;li&gt;Les &lt;strong&gt;tests passifs&lt;/strong&gt; sont les tests dont les résultats sont reportés à Nagios par d&amp;#8217;autres programmes&amp;#160;: là ça sera NSCA. Ces tests sont asynchrones (effectués &amp;#8220;quand on peut&amp;#8221;, pas forcément régulièrement).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;NSCA&lt;/h4&gt;
&lt;p&gt;NSCA est littéralement «&amp;#160;Nagios Service Check Acceptor&amp;#160;». C&amp;#8217;est un démon qui tourne en arrière plan, et qui va recevoir les résultats des tests passifs, pour le retransmettre à Nagios.&lt;/p&gt;
&lt;p&gt;Pour plus de simplicité, NSCA sera installé sur la même machine que le serveur Maître de Nagios.&lt;/p&gt;
&lt;h4&gt;Munin &amp;lt;=&amp;gt; NSCA&lt;/h4&gt;
&lt;p&gt;Le serveur maître de Munin va communiquer à NSCA les résultats des tests grâce à la commande &lt;code&gt;send_nsca&lt;/code&gt;, utilisant le protocole NSCA.&lt;/p&gt;
&lt;p&gt;Pour encore plus de simplicité, nous allons supposer que le serveur maître de Munin et le serveur NSCA (et donc Nagios aussi) se trouvent sur la même machine (comme ça, pas besoin de chiffrer les communications entre Munin et NSCA).&lt;/p&gt;
&lt;h4&gt;NSCA &amp;lt;=&amp;gt; Nagios&lt;/h4&gt;
&lt;p&gt;NSCA va communiquer avec Nagios via un tube nommé, c&amp;#8217;est à dire un fichier dans lequel il va écrire, et qui va être lu par Nagios à intervalle régulier.&lt;/p&gt;
&lt;p&gt;On peut faire porter ce tube par une socket pour réaliser une installation de NCA et Nagios sur deux machines différentes, mais ce n&amp;#8217;est pas le sujet de cet article.&lt;/p&gt;
&lt;h3&gt;Installation et configuration de NSCA&lt;/h3&gt;
&lt;h4&gt;Installation&lt;/h4&gt;
&lt;p&gt;NSCA se trouve dans les dépôts&amp;#160;: &lt;code&gt;sudo apt-get install nsca&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Configuration&lt;/h4&gt;
&lt;p&gt;La configuration de NSCA se trouve dans &lt;code&gt;/etc/nsca.cfg&lt;/code&gt;. Voici les valeurs à retenir&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;#Ne jouez pas à changer ça&lt;br /&gt;pid_file=/var/run/nsca.pid&lt;br /&gt;&lt;br /&gt;# Notre master Munin se trouve sur la même machine, donc on bind sur 127.0.0.1 et ça suffit&lt;br /&gt;server_address=127.0.0.1&lt;br /&gt;&lt;br /&gt;# Il est important que cet utilisateur puisse écrire dans le tube nommé pour communiquer avec Nagios !&lt;br /&gt;nsca_user=nagios&lt;br /&gt;&lt;br /&gt;# Ce fichier spécial devra aussi être mentionné dans la configuration de Nagios, et le nsca_user doit pouvoir y écrire&lt;br /&gt;command_file=/var/lib/nagios3/rw/nagios.cmd&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Ouvrez le fichier &lt;code&gt;/etc/init.d/nsca&lt;/code&gt; et vérifiez que le &lt;code&gt;PIDFILE&lt;/code&gt; est le même que celui de la configuration&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;PIDFILE=&quot;/var/run/nsca.pid&quot;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3&gt;
Configuration de Munin&lt;/h3&gt;
&lt;p&gt;Ouvrez le fichier &lt;code&gt;/etc/munin/munin.conf&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Normalement, vus avez déjà configuré un &amp;#8220;contact&amp;#8221; pour être avertit en cas de défaillance d&amp;#8217;un service contrôlé par Munin. Nous allons à la suite en rajouter un second&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;contact.nagios.command /usr/sbin/send_nsca -H localhost&lt;br /&gt;contact.nagios.always_send ok warning critical&lt;br /&gt;contact.nagios.max_messages 1&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Petite information qui vous fera gagner une journée de travail&amp;#160;: &lt;code&gt;max_messages&lt;/code&gt; doit être à 1 sous Debian 7. Ceci parce que le NSCA des dépôts a été mis&amp;nbsp; jour, et &lt;a hreflang=&quot;en&quot; href=&quot;http://munin-monitoring.org/ticket/1299&quot;&gt;est devenu incompatible avec la version du protocole NSCA implémentée par Munin&lt;/a&gt;. On peut bidouiller NSCA pour corriger ça, mais la solution de contournement la plus simple est de n&amp;#8217;envoyer qu&amp;#8217;un message à la fois à NSCA.&lt;/p&gt;
&lt;p&gt;Ici Munin enverra les résultats &amp;#8220;&lt;code&gt;OK&lt;/code&gt;&amp;#8221;, &amp;#8220;&lt;code&gt;Warning&lt;/code&gt;&amp;#8221; et &amp;#8220;&lt;code&gt;Critical&lt;/code&gt;&amp;#8221; de ses module. Nous allons également faire en sorte qu&amp;#8217;un Munin muet déclenche une erreur &lt;code&gt;UNKNOWN&lt;/code&gt; chez Nagios, pour s&amp;#8217;assurer que le &amp;#8220;&lt;code&gt;OK&lt;/code&gt;&amp;#8221; correspond bien à un test &amp;#8220;&lt;code&gt;OK&lt;/code&gt;&amp;#8221; et non à l&amp;#8217;absence de &amp;#8220;&lt;code&gt;Warning&lt;/code&gt;&amp;#8221; et de &amp;#8220;&lt;code&gt;Critical&lt;/code&gt;&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Ok, on triche un peu. En fait, les tests de Munin sont synchrones. On a donc un mécanisme synchrone (Munin) qui va envoyer de manière synchrone les résultats au mécanisme asynchrone de collecte (NSCA). L&amp;#8217;aspect synchrone va nous permettre de détecter le moment où on aurait dût recevoir un résultat, et alerter si ce n&amp;#8217;a pas été le cas.&lt;/p&gt;
&lt;h3&gt;Configuration de Nagios&lt;/h3&gt;
&lt;h4&gt;Communication avec NSCA&lt;/h4&gt;
&lt;p&gt;Ouvrez le fichier de configuration &lt;code&gt;/etc/nagios3/nagios.cfg&lt;/code&gt; et vérifiez que la ligne suivante est bien présente et dé-commentée&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;command_file=/var/lib/nagios3/rw/nagios.cmd&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Les services&lt;/h4&gt;
&lt;p&gt;Si vous avez déjà redémarré les services après chaque modification de la configuration, vous pourrez voir dans les logs de Nagios les erreurs suivantes&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;[1381670602] Warning:&amp;nbsp; Passive check result was received for service 'some service' on host 'hostname.ext', but the service could not be found!&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;La bonne nouvelle c&amp;#8217;est que Nagios reçoit les notifications de NSCA&amp;#160;!&lt;/p&gt;
&lt;p&gt;La mauvaise c&amp;#8217;est qu&amp;#8217;il ne peut pas le lier à un service et à un hôte, parce qu&amp;#8217;ils ne sont tout simplement pas déclarés. Il va nous falloir déclarer un service Nagios pour chaque service Munin que nous lui transmettons, sinon celui-ci ne sera pas capable de le traiter.&lt;/p&gt;
&lt;p&gt;Créez le fichier &lt;code&gt;/etc/nagios3/conf.d/services/munin-services.cfg&lt;/code&gt; et placez à l’intérieur la configuration suivante&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;# generic service template definition&lt;br /&gt;define service{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; generic-munin-service ; The 'name' of this service template&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use generic-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; check_command&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return-unknown!&quot;No Data from passive check&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; active_checks_enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Active service checks are disabled&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; check_freshness&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freshness_threshold&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 360&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flap_detection_options&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; max_check_attempts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; register&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;first_notification_delay&amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Delay first notification for false positives (will execute 2 checks : munin sends 1 check every 5 minutes)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; munin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Disk latency per device :: Average latency for /dev/sda&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use generic-munin-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Disk latency per device :: Average latency for /dev/sdb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use generic-munin-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; munin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Disk usage in percent&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use generic-munin-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; munin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inode usage in percent&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use generic-munin-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; munin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File table usage&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use generic-munin-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; munin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; eth0 errors&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use generic-munin-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; munin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exim Mailqueue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; use generic-munin-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Ce fichier est bien évidemment à compléter selon les plugins et les checks que vous avez activé dans Munin. Le &lt;code&gt;service_description&lt;/code&gt; est le nom complet du service dans Munin.&lt;/p&gt;
&lt;p&gt;La configuration du template générique nous assure qu&amp;#8217;une erreur &amp;#8220;&lt;code&gt;UNKNOWN : No data from passive check&lt;/code&gt;&amp;#8221; sera retournée en cas d&amp;#8217;absence de résultat après le délai du &amp;#8220;&lt;code&gt;freshness_threshold&lt;/code&gt;&amp;#8221;, avec 2 essais avant d&amp;#8217;alerter du problème.&lt;/p&gt;
&lt;h4&gt;Les groupes d&amp;#8217;hôtes&lt;/h4&gt;
&lt;p&gt;Les plus attentifs d&amp;#8217;entre-vous ont remarqué la présence d&amp;#8217;un hostgroup dans la configuration, mais nous ne l&amp;#8217;avons pas encore déclaré. Allons-y, rajoutez dans le fichier &lt;code&gt;/etc/nagios3/conf.d/groups.cfg&lt;/code&gt;&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;# Hostgroup for Munin&lt;br /&gt;define hostgroup {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp; munin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Munin reporting clients&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Les hôtes&lt;/h4&gt;
&lt;p&gt;Maintenant qu&amp;#8217;on a le &lt;code&gt;hostgroup&lt;/code&gt;, il ne reste plus qu&amp;#8217;à modifier vos fichiers &lt;code&gt;/etc/nagios3/conf.d/hosts/*.cfg&lt;/code&gt; pour rajouter le &lt;code&gt;hostgroup&lt;/code&gt; sur les hôtes sur lesquels &lt;code&gt;munin-node&lt;/code&gt; est installé.&lt;/p&gt;
&lt;h3&gt;Débuggage&lt;/h3&gt;
&lt;p&gt;En principe, après avoir redémarré tous les services, vous devriez recevoir assez vite les notifications de NSCA et voir passer vos indicateurs du gris vers le vert dans Nagios.&lt;/p&gt;
&lt;p&gt;Si ce n&amp;#8217;est pas le cas et que ces derniers passent au orange, c&amp;#8217;est qu&amp;#8217;il y a un problème de communication entre Nagios et Munin. Mon problème principal a été le non démarrage de NSCA au démarrage de la machine, pour de histoires de PID que le script de démarrage n&amp;#8217;arrivait à écrire ou à supprimer.&lt;/p&gt;
&lt;p&gt;Il arrive aussi que le tube nommé soit inaccessible en écriture à l’utilisateur qui lance NSCA, vérifiez bien que l&amp;#8217;utilisateur &lt;code&gt;nagios&lt;/code&gt; est celui qui fait tourner à la fois Nagios et NSCA.&lt;/p&gt;
&lt;p&gt;Enfin, pour vérifier que le problème ne vient pas d&amp;#8217;une mauvaise configuration de Nagios, faites un envoi de données &amp;#8220;manuellement&amp;#8221; avec la commande &lt;code&gt;send_nsca&lt;/code&gt;&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;echo -e &quot;monhote.ext\tNom complet du service Munin\t1\t0\n\n&quot; | /usr/sbin/send_nsca -H localhost&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3&gt;Pour conclure&lt;/h3&gt;
&lt;p&gt;En conclusion, nous avons terminé notre installation de Munin, Nagios, et NSCA&amp;#160;! Munin communique à présent ses alertes à Nagios, et Nagios est capable d&amp;#8217;alerter si ces alertes ne sont pas remontées. Le reste est dans les billets précédents&amp;#160;! &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;
&lt;p&gt;N&amp;#8217;hésitez pas à me faire part dans les commentaires des problèmes que vous pourriez rencontrer en déroulant cette suite d&amp;#8217;articles, ou à me corriger si vous constatez des erreurs dans la série d&amp;#8217;article. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt;.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Le monitoring sous Debian avec Nagios et Munin (Puppet en guest star) : de A à Z - Partie 4 : Munin</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/08/19/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-4-%3A-Munin</link>
        <guid isPermaLink="false">urn:md5:a926c76e863d3405f654b019fec2467e</guid>
        <pubDate>Mon, 19 Aug 2013 22:29:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>debian</category>
                  <category>guide</category>
                  <category>monitoring</category>
                  <category>munin</category>
                  <category>serie-monitoring-nagios-munin-puppet</category>
                  <category>serveur</category>
                <description>&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt; &amp;#8212; &lt;a href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/08/17/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-3-%3A-Puppet&quot; rel=&quot;prev&quot;&gt;Voir l&amp;#8217;article précédent&amp;#160;: Puppet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dans l&amp;#8217;article précédent, nous avons vu une manière simple de configurer Puppet pour des opérations de réplication base de la configuration.&lt;/p&gt;
&lt;p&gt;Dans cette partie nous allons détailler l&amp;#8217;installation et la configuration de Munin et de ses plugins, en utilisant bien sûr notre Puppet fraîchement installé.&lt;/p&gt;          &lt;h3&gt;Principe&lt;/h3&gt;
&lt;p&gt;Munin est basé tout comme Nagios et Puppet sur le modèle maître-esclave&amp;#160;: le &amp;#8220;master&amp;#8221; Munin va récupérer à intervalle régulier les données des &amp;#8220;nodes&amp;#8221; et remplir des fichiers contenant les données reçues. Ces fichiers sont au format &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/RRDTool&quot;&gt;RRD&lt;/a&gt;, qui est un standard utilisé par beaucoup de logiciels de collecte de données.&lt;/p&gt;
&lt;p&gt;Nous allons donc devoir configurer d&amp;#8217;une part le &amp;#8220;master&amp;#8221; et ensuite les &amp;#8220;nodes&amp;#8221;. Pour les nodes, nous utiliserons Puppet pour répliquer la configuration.&lt;/p&gt;
&lt;p&gt;Munin, tout comme Nagios, a une architecture modulaire basée sur des plugins. Cela veut dire que le programme principal ne fait que de la collecte et de la transmission de données. Toutes les données collectées sont en réalité fournies par des plugins, qu&amp;#8217;il va falloir configurer un par un. Rassurez vous, la plupart des plugins possèdent déjà une configuration par défaut.&lt;/p&gt;
&lt;p&gt;Pour la suite, je vais supposer que le serveur accueillant le master munin est nommé &amp;#8220;master&amp;#8221; sur le réseau et ceux accueillant les nodes &amp;#8220;node01&amp;#8221;, &amp;#8220;node02&amp;#8221;, etc. Je vais aussi supposer que vous avez correctement installé Puppet sur l&amp;#8217;ensemble des futurs nodes Munin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note importante&lt;/strong&gt;&amp;#160;: les données qui sont échangées entre les nodes Munin et le Master &lt;strong&gt;ne sont pas chiffrées&lt;/strong&gt;. Si c&amp;#8217;est un problème pour vous, vous devriez étudier attentivement &lt;a hreflang=&quot;en&quot; href=&quot;http://munin-monitoring.org/wiki/MuninTLSSetup&quot;&gt;la configuration TLS pour Munin&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Le &amp;#8220;master&amp;#8221;&lt;/h3&gt;
&lt;p&gt;L&amp;#8217;installation du master Munin ne présente pas de difficultés particulières&amp;#160;: &lt;code&gt;sudo apt-get install munin&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Munin possède une interface de visualisation de ses graphes, mais il faut configurer le serveur web pour y accéder. La configuration pour Apache fournie avec le paquet est prête à être installée dans &lt;code&gt;/etc/munin/apache.conf&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Configuration générale&lt;/h4&gt;
&lt;p&gt;Le fichier de configuration principal se trouve dans &lt;code&gt;/etc/munin/munin.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La configuration par défaut n&amp;#8217;a pas besoin d&amp;#8217;être beaucoup retouchée. Renseignez toutefois les adresses de contact, par exemple&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;contact.root.command mail -s &quot;Munin notification&quot; root@localhost&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;Vous pouvez ajouter plusieurs de ces lignes, avec le nom d&amp;#8217;utilisateur et l&amp;#8217;adresse mail que vous souhaitez.
&lt;h4&gt;Configuration des nodes&lt;/h4&gt;
&lt;p&gt;Vers la fin du fichier &lt;code&gt;/etc/munin/munin.conf&lt;/code&gt; , vous trouverez un exemple de configuration pour un node en local. Nous allons rajouter les nôtres&amp;#160;!&lt;/p&gt;
&lt;p&gt;Tout d&amp;#8217;abord, les nodes en eux même, il s&amp;#8217;agit simplement de les déclarer à la suite de cette façon&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;[node01]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address 172.16.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use_node_name yes&lt;br /&gt;&lt;br /&gt;[node02]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address 172.16.0.2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use_node_name yes&lt;br /&gt;&lt;br /&gt;[node03]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address 172.16.0.3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use_node_name yes&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;Évidemment, changez l&amp;#8217;adresse IP mentionnée ici par l&amp;#8217;adresse IP de vos nodes à vous. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot;&gt;
&lt;h4&gt;Configuration des groupes de nodes&lt;/h4&gt;
&lt;p&gt;Si votre parc est hétérogène, vous aurez rapidement très envie de faire des groupes pour rassembler vos hôtes et naviguer facilement dans les graphes.&lt;/p&gt;
&lt;p&gt;Pour cela, toujours dans le fichier &lt;code&gt;/etc/munin/munin.conf&lt;/code&gt;, il suffit de rajouter un &amp;#8220;pseudo-hote&amp;#8221; de cette façon&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;[monparc;Totals] # Pour les graphes totaux&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; update no&amp;nbsp;&amp;nbsp; # Pas de collecte de données sur cet hôte&lt;br /&gt;&lt;br /&gt;[monparc;] # Groupement des nodes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; node_order Totals node01 node02 node03&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;N&amp;#8217;oubliez pas de relancer Munin après avoir modifié la configuration&amp;#160;: &lt;code&gt;service munin restart&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Les &amp;#8220;nodes&amp;#8221;&lt;/h3&gt;
&lt;p&gt;D&amp;#8217;abord la configuration pour un node, et après on s&amp;#8217;occupera de la réplication de la configuration avec Puppet.&lt;/p&gt;
&lt;h4&gt;Configuration générale&lt;/h4&gt;
&lt;p&gt;Le nodes n&amp;#8217;ont besoin que de très peu de configuration, pratiquement tout est fait par les plugins, et la récupération des données est faite par le Master.&lt;/p&gt;
&lt;p&gt;Dans le fichier &lt;code&gt;/etc/munin/munin-node.conf&lt;/code&gt;, renseignez si besoin le nom du node dans le paramètre &lt;code&gt;host_name&lt;/code&gt;&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;host_name node01&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;Précisez qui sera autorisé à venir collecter les données via le paramètre &lt;code&gt;allow&lt;/code&gt; ou &lt;code&gt;cidr_allow&lt;/code&gt; si vous autorisez tout votre sous-réseau (note&amp;#160;: fonctionne aussi en ipv6)&amp;#160;:
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;allow ^172\.16\.0\.200$ # On suppose que le Master est à l'adresse 172.16.0.200&lt;br /&gt;cidr_allow 172.16.0.0/16 # Là on autorise carrément tout le sous-réseau /16&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Enfin, vérifiez bien que le node est en écoute sur toutes les adresses&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;bind *&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;N&amp;#8217;oubliez pas de relancer munin-node après avoir changé la configuration&amp;#160;: &lt;code&gt;service munin-node restart&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Les plugins&lt;/h4&gt;
&lt;p&gt;L&amp;#8217;ensemble des plugins disponibles réside dans le dossier &lt;code&gt;/usr/share/munin/plugins/&lt;/code&gt;, il est fortement déconseillé de les lancer directement.&lt;/p&gt;
&lt;p&gt;Pour activer un plugin, il suffit de créer un lien symbolique dans le dossier &lt;code&gt;/etc/munin/plugins/&lt;/code&gt;, et de relancer le démon munin-node. par exemple&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;ln -s /usr/share/munin/plugins/apt /etc/munin/plugins/apt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;service munin-node restart&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour tester l&amp;#8217;exécution d&amp;#8217;un plugin, il suffit de lancer la commande &lt;code&gt;munin-run&lt;/code&gt; suivi du nom du plugin. Le plugin doit être activé et c&amp;#8217;est le nom du lien symbolique qui est à spécifier lors de l&amp;#8217;appel à &lt;code&gt;munin-run&lt;/code&gt;. &lt;code&gt;munin-run&lt;/code&gt; a d&amp;#8217;autres options intéressantes, comme par exemple &amp;#8220;&lt;code&gt;munin-run &amp;lt;nomduplugin&amp;gt; config&lt;/code&gt;&amp;#8221;, qui permet de lister tous les paramètres spécifiques à un plugin.&lt;/p&gt;
&lt;p&gt;Certains plugins prennent des paramètres directement depuis le lien symbolique. Par exemple le plugin &amp;#8220;&lt;code&gt;ping&lt;/code&gt;&amp;#8221; se nomme &amp;#8220;&lt;code&gt;ping_&lt;/code&gt;&amp;#8221; mais ne fonctionnera pas si votre lien symbolique s&amp;#8217;appelle &amp;#8220;&lt;code&gt;ping_&lt;/code&gt;&amp;#8221;. Le nom du lien symbolique doit préciser l&amp;#8217;hôte à pinguer&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;ln -s /usr/share/munin/plugins/ping_ /etc/munin/plugins/ping_ipv4.google.com&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;À noter que ça marche aussi pour un ping en ipv6&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;ln -s /usr/share/munin/plugins/ping_ /etc/munin/plugins/ping6_ipv6.google.com&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De la configuration peut être nécessaire pour faire remonter les alertes des plugins. Dans le dossier &lt;code&gt;/etc/munin/plugins-conf.d/&lt;/code&gt; se trouve la configuration des plugins. je vous conseille de faire un fichier de configuration par plugin, nommé comme le plugin présent dans &lt;code&gt;/etc/munnin/plugins/&lt;/code&gt;. On peut y configurer l&amp;#8217;ensemble des paramètres retournés par la commande &lt;code&gt;munin-run &amp;lt;nomduplugin&amp;gt; config&lt;/code&gt; à l&amp;#8217;exception qu&amp;#8217;il faut rajouter &amp;#8220;&lt;code&gt;env.&lt;/code&gt;&amp;#8221; devant et préciser le nom du plugin ciblé. Par exemple&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;[ping_*]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;env.ping_warning 0.030&lt;br /&gt;env.ping_critical 0:0.100&lt;br /&gt;env.packetloss_warning 1&lt;br /&gt;env.packetloss_critical 10&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et comme d&amp;#8217;habitude, pour aller plus loin, rien de tel qu&amp;#8217;un petit tour dans &lt;code&gt;/usr/share/doc/munin-node/&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Un coup de Puppet magique&amp;#160;!&lt;/h4&gt;
&lt;p&gt;Ça y est, on est calé sur la configuration des nodes&amp;#160;! Et si on répliquait&amp;#160;?&lt;/p&gt;
&lt;p&gt;Reprenons les fichiers que nous avons préparés dans &lt;a href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/08/17/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-3-%3A-Puppet&quot;&gt;la partie précédente&lt;/a&gt;. Le fichier &lt;code&gt;/etc/puppet/manifests/classes/munin.pp&lt;/code&gt; contient le prototype pour notre configuration. nous allons rajouter dans ce fichier de quoi paramétrer directement les nodes Munin&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;class munin {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # S'assurer que munin-node soit bien toujours à la dernière version des dépôts disponible&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package {'munin-node':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ensure =&amp;gt; 'latest',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # S'assurer que le démon munin-node tourne sur la machine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; service {'munin-node':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ensure =&amp;gt; 'running',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enable&amp;nbsp; =&amp;gt; 'true',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hasrestart =&amp;gt; 'true',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; require =&amp;gt; Package['munin-node'],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # En cas de modification de la configuration, redémarre munin-node&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file { '/etc/munin/munin-node.conf':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ensure =&amp;gt; 'file',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notify&amp;nbsp; =&amp;gt; Service['munin-node'],&amp;nbsp; # this sets up the relationship&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mode&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; 644,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; owner&amp;nbsp;&amp;nbsp; =&amp;gt; 'root',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group&amp;nbsp;&amp;nbsp; =&amp;gt; 'root',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; require =&amp;gt; Package['munin-node'],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; content =&amp;gt; template('munin/munin-node.conf.erb'), # Ça on explique juste après&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # On configure un plugin qui n'est pas par défaut, histoire de dire qu'on l'a fait&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Le lien symbolique&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file { '/etc/munin/plugins/apt':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ensure =&amp;gt; 'link',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group&amp;nbsp; =&amp;gt; '0',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mode&amp;nbsp;&amp;nbsp; =&amp;gt; '777',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; owner&amp;nbsp; =&amp;gt; '0',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; target =&amp;gt; '/usr/share/munin/plugins/apt',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notify =&amp;gt; Service['munin-node'], # Ah oui, si on change ce fichier, on redémarre munin-node&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # La configuration&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file { '/etc/munin/plugin-conf.d/apt':&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ensure =&amp;gt; 'present',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group&amp;nbsp; =&amp;gt; '0',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mode&amp;nbsp;&amp;nbsp; =&amp;gt; '644',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; owner&amp;nbsp; =&amp;gt; '0',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; content =&amp;gt; &quot;[apt]\nenv.pending.warning 0:0&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notify =&amp;gt; Service['munin-node'], # Là aussi on redémarre&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Parlons de &lt;code&gt;template('munin/munin-node.conf.erb')&lt;/code&gt;. Puppet nous permet d&amp;#8217;utiliser des templates de configuration pour éviter d&amp;#8217;avoir à fournir tout le contenu du fichier de configuration au milieu des règles Puppet. C&amp;#8217;est le cas pour le fichier &lt;code&gt;/etc/munin/plugin-conf.d/apt&lt;/code&gt;, mais pour ce fichier qui est volumineux et nécessite l&amp;#8217;emploi d&amp;#8217;une variable, créez le dossier munin dans le dossier &lt;code&gt;/etc/puppet/templates/&lt;/code&gt; et remplissez le avec le contenu suivant&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;#&lt;br /&gt;# Example config-file for munin-node&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;log_level 4&lt;br /&gt;log_file /var/log/munin/munin-node.log&lt;br /&gt;pid_file /var/run/munin/munin-node.pid&lt;br /&gt;&lt;br /&gt;background 1&lt;br /&gt;setsid 1&lt;br /&gt;&lt;br /&gt;user root&lt;br /&gt;group root&lt;br /&gt;&lt;br /&gt;# Regexps for files to ignore&lt;br /&gt;ignore_file [\#~]$&lt;br /&gt;ignore_file DEADJOE$&lt;br /&gt;ignore_file \.bak$&lt;br /&gt;ignore_file %$&lt;br /&gt;ignore_file \.dpkg-(tmp|new|old|dist)$&lt;br /&gt;ignore_file \.rpm(save|new)$&lt;br /&gt;ignore_file \.pod$&lt;br /&gt;&lt;br /&gt;host_name &amp;lt;%= @hostname %&amp;gt;&lt;br /&gt;&lt;br /&gt;allow ^172\.16\.0\.200+$&lt;br /&gt;&lt;br /&gt;host *&lt;br /&gt;&lt;br /&gt;port 4949&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;Notez la variable &lt;code&gt;@hostname&lt;/code&gt; employée dans le fichier, et qui doit être déclarée dans le node Puppet (voir ci-après).
&lt;p&gt;Finalement, n&amp;#8217;oubliez pas de créer un &amp;#8220;node&amp;#8221; Puppet dans le dossier &lt;code&gt;/etc/puppet/manifests/nodes/&lt;/code&gt;  pour chaque node Munin, et de le configurer comme dans l&amp;#8217;exemple&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;node 'node01' {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$hostname = 'node01'&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;include munin&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sinon la configuration ne sera tout simplement pas propagée par Puppet. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Pour conclure&lt;/h3&gt;
&lt;p&gt;Nous avons terminé notre petit tour de la configuration de Munin. Nous avons répliqué les nodes Munin avec Puppet, mais il nous manque encore quelque chose pour terminer le travail&amp;#160;: pour l&amp;#8217;instant notre Nagios est toujours muet et les alertes de Munin vous parviennent, mais ne sont pas centralisées dans Nagios.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est l&amp;#8217;objet de la dernière partie&amp;#160;: NSCA. Nous terminerons la configuration de Nagios pour mettre en place des contrôles passifs, et nous ferons le lien entre Munin et Nagios, comme &amp;#8220;par magie&amp;#8221;. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/10/13/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-5-%3A-NSCA&quot;&gt;Lire la partie suivante&amp;#160;: NSCA&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt;.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Le monitoring sous Debian avec Nagios et Munin (Puppet en guest star) : de A à Z - Partie 3 : Puppet</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/08/17/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-3-%3A-Puppet</link>
        <guid isPermaLink="false">urn:md5:68052107ee0bd0f5e554d1ca912b1dce</guid>
        <pubDate>Sat, 17 Aug 2013 16:00:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>debian</category>
                  <category>guide</category>
                  <category>monitoring</category>
                  <category>puppet</category>
                  <category>serie-monitoring-nagios-munin-puppet</category>
                  <category>serveur</category>
                <description>&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt; &amp;#8212; &lt;a href=&quot;http://uname.pingveno.net/blog/index.php/post/2013/07/07/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-2-%3A-Nagios&quot; rel=&quot;prev&quot;&gt;Voir l&amp;#8217;article précédent&amp;#160;: Nagios&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dans l&amp;#8217;article précédent, nous avons vu comment écrire une configuration de base pour Nagios.&lt;/p&gt;
&lt;p&gt;Dans cette partie, je vais aborder un sujet un peu transverse mais nécessaire à la création de notre solution d&amp;#8217;ensemble&amp;#160;: &lt;strong&gt;Puppet&lt;/strong&gt;.&lt;/p&gt;          &lt;h3&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Puppet est un logiciel de gestion de configuration. C&amp;#8217;est à dire
qu&amp;#8217;il permet de répliquer et conserver à l&amp;#8217;identique un ensemble de
paramètres (des fichiers de configuration) sur un ensemble de machines.&lt;/p&gt;
&lt;p&gt;Puppet a été créé pour un besoin simple&amp;#160;: répliquer de la
configuration à grande échelle sur un ensemble de machines, et en
assurer la consistance. Nous allons principalement l&amp;#8217;utiliser pour
répliquer notre configuration de Munin sur l&amp;#8217;ensemble des machines du
parc, pour faciliter le déploiement de notre solution de monitoring.&lt;/p&gt;
&lt;p&gt;Puppet fonctionne sur le modèle maître-esclaves&amp;#160;: un serveur
principal va contenir l&amp;#8217;ensemble des paramètres à répliquer, et des
serveurs esclaves vont interroger le serveur maître pour récupérer leur
configuration. Il est possible de configurer le maître afin de
différencier la configuration fournie à chaque esclave.&lt;/p&gt;
&lt;p&gt;La communication entre le maître et ses esclaves est chiffrée et
signée (le maître connaît ses esclaves, les esclaves connaissent leur
maître), évitant que des informations sensibles ne se baladent sur le
réseau, ou ne soit fournies accidentellement à des tiers.&lt;/p&gt;
&lt;h3&gt;Éléments en présence&lt;/h3&gt;
&lt;p&gt;Nous allons considérer les éléments suivants&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p&gt;Le maître, aussi appelé PuppetMaster, est la machine qui va
stocker les configurations à répliquer et fournir ce dont ellesont
besoin aux machines esclaves.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Les machines esclaves, ou &amp;#8220;clients Puppet&amp;#8221;, sont les machines
sous le contrôle du PuppetMaster, elles vérifient périodiquement auprès
du PuppetMaster si leur configuration a besoin d&amp;#8217;être mise à jour et
appliquent les directives fournies par le PuppetMaster.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour ce tutoriel, nous allons considérer deux machines&amp;#160;: le PuppetMaster que je vais appeler &amp;#8220;&lt;code&gt;master&lt;/code&gt;&amp;#8221; et une machine cliente que je vais appeler &amp;#8220;&lt;code&gt;slave01&lt;/code&gt;&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Je suppose que les machines &amp;#8220;&lt;code&gt;master&lt;/code&gt;&amp;#8221; et &amp;#8220;&lt;code&gt;slave01&lt;/code&gt;&amp;#8221; sont correctement mises en place dans le parc (qu&amp;#8217;elles sont présentes dans le fichier &lt;code&gt;/etc/hosts&lt;/code&gt; ou qu&amp;#8217;elles ont un enregistrement DNS valide). Je suppose également que le &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Fully_qualified_domain_name&quot;&gt;FQDN&lt;/a&gt; des machines est correct (mis en place dans &lt;code&gt;/etc/hostname&lt;/code&gt; ou avec la commande &lt;code&gt;hostname -b&lt;/code&gt;).&lt;/p&gt;
&lt;h3&gt;Installation du Maître et de l&amp;#8217;Esclave&lt;/h3&gt;
&lt;h4&gt;Installation du Maître&lt;/h4&gt;
&lt;p&gt;À noter que dans le cas de la configuration qui est décrite, le
maître ne
sera pas son propre esclave. Il est néanmoins possible de gérer certains
aspects de la configuration du maître via le maître lui-même en
effectuant
après l&amp;#8217;installation du maître l&amp;#8217;installation d&amp;#8217;un esclave sur la même
machine (mais attention aux migraines).&lt;/p&gt;
&lt;p&gt;Sous Debian, Puppet est dans les dépôts. Pour installer le maître il suffit de taper&amp;#160;: &lt;code&gt;sudo apt-get install puppetmaster&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour des raisons de sécurité, le PuppetMaster n&amp;#8217;est pas configuré pour se lancer au démarrage de la machine. Éditez le fichier &lt;code&gt;/etc/defaults/puppetmaster&lt;/code&gt; et placez la variable &lt;code&gt;START&lt;/code&gt; à &amp;#8220;&lt;code&gt;yes&lt;/code&gt;&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Lancez ensuite le serveur maître de Puppet avec la commande &lt;code&gt;service puppetmaster start&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Installation de l&amp;#8217;esclave&lt;/h4&gt;
&lt;p&gt;De la même manière que le maître, lancez sur l&amp;#8217;esclave&amp;#160;: &lt;code&gt;sudo apt-get install puppet&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Comme pour le PuppetMaster, il faut préciser à l&amp;#8217;esclave Puppet qu&amp;#8217;il doit se lancer au démarrage de la machine&amp;#160;: éditez &lt;code&gt;/etc/defaults/puppet&lt;/code&gt; et placez la variable &lt;code&gt;START&lt;/code&gt; à &amp;#8220;&lt;code&gt;yes&lt;/code&gt;&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Ouvrez à présent le fichier de configuration &lt;code&gt;/etc/puppet/puppet.conf&lt;/code&gt; et rajoutez la ligne suivante dans la section &lt;code&gt;[main]&lt;/code&gt;&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;server=master&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;#8217;utilise ici le domaine court (&amp;#8220;&lt;code&gt;master&lt;/code&gt;&amp;#8221;) en supposant
que celui-ci se résout correctement, mais vous pouvez mettre l&amp;#8217;adresse
IP du serveur &amp;#8220;master&amp;#8221; ou son FQDN à la place&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est le moment d&amp;#8217;essayer notre configuration&amp;#160;! Lancez la commande&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt; &lt;code&gt;sudo puppetd --test --waitforcert 60&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si tout va bien, l&amp;#8217;esclave va interroger le maître pour récupérer sa
configuration. Comme c&amp;#8217;est la première fois qu&amp;#8217;il le fait, l&amp;#8217;esclave va
attendre que son certificat soit signé par le maître, qui le reconnaîtra
alors comme un de ses esclaves.&lt;/p&gt;
&lt;p&gt;Pour débloquer la situation, lancez la commande suivante sur le maître&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;puppet cert --list&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;Vous devriez alors voir une liste de certificats en attente
de signature. Toujours sur le maître, signez le certificat de votre
esclave&amp;#160;:&lt;code&gt;
&lt;blockquote&gt;&lt;p&gt;puppet cert --sign slave01&lt;/p&gt;
&lt;/blockquote&gt;&lt;/code&gt;
&lt;p&gt;Sur l&amp;#8217;esclave, la situation se débloque, et il vous informe que son certificat a été signé, tout est prêt&amp;#160;!&lt;/p&gt;
&lt;p&gt;Lancez finalement le démon Puppet sur l&amp;#8217;esclave&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;service puppet start&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;Le lancement du démon est nécessaire pour une propagation
automatique des opérations que nous allons faire sur le maître. Un
lancement manuel de la mise à jour de l&amp;#8217;esclave peut cependant être fait
avec la commande &lt;code&gt;puppetd --test&lt;/code&gt; .
&lt;h3&gt;Comment ça marche&amp;#160;?&lt;/h3&gt;
&lt;p&gt;Sur le Maître, le point d&amp;#8217;entrée principal de la configuration est &lt;code&gt;/etc/puppet/manifests/site.pp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le répertoire &lt;code&gt;/etc/puppet/templates/&lt;/code&gt; sert à stocker les
templates de configuration qui pourront être lu par le moteur de Puppet
(plus pratique de fournir le chemin vers un fichier template plutôt que
de renseigner le contenu du fichier au milieu des règles de Puppet).&lt;/p&gt;
&lt;p&gt;Le répertoire &lt;code&gt;/etc/puppet/modules/&lt;/code&gt;, oubliez le pour l&amp;#8217;instant.&lt;/p&gt;
&lt;h4&gt;Notre modèle de configuration pour la suite&lt;/h4&gt;
&lt;p&gt;Comme nous ne souhaitons pas mettre TOUTE la configuration dans &lt;code&gt;/etc/puppet/manifests/site.pp&lt;/code&gt;, nous allons créer des répertoires dans le dossier &lt;code&gt;manifests&lt;/code&gt; et inclure les fichiers qui sont présents dans ces répertoires, histoire de ranger un peu.&lt;/p&gt;
&lt;p&gt;Créez les dossiers &lt;code&gt;classes&lt;/code&gt; et &lt;code&gt;nodes&lt;/code&gt; dans le dossier &lt;code&gt;manifests&lt;/code&gt; .&lt;/p&gt;
&lt;p&gt;Le dossier &lt;code&gt;classes&lt;/code&gt; contiendra les éléments de configuration génériques, potentiellement paramétrables, que nous allons appliquer à nos esclaves.&lt;/p&gt;
&lt;p&gt;Dans le dossier &lt;code&gt;nodes&lt;/code&gt;, je vous conseille de créer un
fichier par esclave, afin de personnaliser efficacement les classes
requises pour chacun des esclaves.&lt;/p&gt;
&lt;p&gt;Le fichier &lt;code&gt;/etc/puppet/manifests/site.pp&lt;/code&gt; contiendra donc les appels aux fichiers présents dans ces répertoires&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;# import many manifest files with node definitions&lt;br /&gt;import 'classes/*.pp'&lt;br /&gt;import 'nodes/*.pp'&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et nous auront donc dans le dossier &lt;code&gt;/etc/puppet/manifests/classes&lt;/code&gt; un fichier &lt;code&gt;munin.pp&lt;/code&gt; qui ressemblera à ça&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;class munin {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;Et dans le dossier &lt;code&gt;/etc/puppet/manifests/nodes&lt;/code&gt; un fichier &lt;code&gt;slave01.pp&lt;/code&gt; qui ressemblera à ça&amp;#160;:
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;node 'slave01' {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$hostname = 'slave01'&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;include munin&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;C&amp;#8217;est tout&amp;#160;! La configuration des esclaves pour servir de nœuds Munin via Puppet sera détaillé dans le prochain article.&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;À noter&amp;#160;:&lt;/strong&gt; La commande &amp;#8220;import&amp;#8221; de Puppet ne fait que
déclarer les fichiers à lire, la commande &amp;#8220;include&amp;#8221; exécute la classe
et donc applique effectivement la configuration du fichier.&lt;/p&gt;
&lt;h4&gt;Pour aller plus loin avec Puppet&lt;/h4&gt;
&lt;p&gt;Pour aller plus loin avec Puppet, vous pouvez lire &lt;a hreflang=&quot;en&quot; href=&quot;http://docs.puppetlabs.com/puppet/2.7/reference/lang_summary.html&quot;&gt;la documentation issue du site de Puppetlabs&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Pour conclure&lt;/h3&gt;
&lt;p&gt;Nous avons posé les bases de notre solution de monitoring, notre
serveur Nagios est en place, et Puppet est prêt à répliquer la
configuration des nœuds Munin. Il nous reste à créer cette
configuration, et à effectuer le lien entre le Master Munin et Nagios,
pour que les alertes puissent remonter.&lt;/p&gt;
&lt;p&gt;Dans le billet suivant, nous détaillerons la configuration des nœuds
Munin avec Puppet et la configuration du Master Munin pour les alertes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/08/19/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-(Puppet-en-guest-star)-:-de-A-à-Z-Partie-4-:-Munin&quot; rel=&quot;next&quot;&gt;Lire la partie suivante&amp;#160;: Munin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt;.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Le monitoring sous Debian avec Nagios et Munin (Puppet en guest star) : de A à Z - Partie 2 : Nagios</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/07/07/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-2-%3A-Nagios</link>
        <guid isPermaLink="false">urn:md5:89ab0a4d73ba04725d6a10253cb75c60</guid>
        <pubDate>Sun, 07 Jul 2013 19:59:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>debian</category>
                  <category>guide</category>
                  <category>monitoring</category>
                  <category>nagios</category>
                  <category>serie-monitoring-nagios-munin-puppet</category>
                  <category>serveur</category>
                <description>&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt; &amp;#8212; &lt;a href=&quot;http://uname.pingveno.net/blog/index.php/post/2013/07/04/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-1-%3A-introduction&quot; rel=&quot;prev&quot;&gt;Voir l&amp;#8217;article précédent&amp;#160;: Introduction&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dans l&amp;#8217;épisode précédent, nous avons vu les généralités d&amp;#8217;usage sur le monitoring, Nagios, et Munin.&lt;/p&gt;
&lt;p&gt;Dans cette partie, je vais tenter de détailler la réalisation d&amp;#8217;une configuration fonctionnelle de Nagios, avec quelques sondes, pour servir de base pour la suite.&lt;/p&gt;          &lt;h3&gt;Installation de Nagios&lt;/h3&gt;
&lt;p&gt;Je travaille sous Debian GNU/Linux par habitude. Avec ce système d&amp;#8217;exploitation, il est très facile d&amp;#8217;installer Nagios :&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;sudo apt-get install nagios3&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Attention&amp;#160;: la configuration pour Nagios ne s&amp;#8217;écrit pas de la même façon selon la version majeure considérée. Ici pour la version 3, les fichiers de configuration seront différents de ceux pour Nagios 2, pensez à bien vérifier la version des exemples que vous copiez-collez sur Internet.&lt;/p&gt;
&lt;p&gt;Nagios s&amp;#8217;administre depuis une interface Web&amp;#160;; pour pouvoir y accéder, le paquet de Nagios installe automatiquement les dépendances permettant à un serveur Web de tourner (Apache 2 par défaut), mais vous pourriez avoir envie de faire autrement. Vérfiiez alors que vous avez bien un serveur web installé pour pouvoir faire tourner Nagios en CGI (python).&lt;/p&gt;
&lt;p&gt;Nagios installe par défaut un ensemble de plugins pour les sondes mais pas seulement. Nagios est très modulaire, et permet de faire beaucoup de chose. Si vous avez besoin des plugins supplémentaires, ceux-ci sont dans les paquets &lt;code&gt;nagios-plugins-*&lt;/code&gt; .&lt;/p&gt;
&lt;p&gt;Par défaut, après l&amp;#8217;installation Nagios est accessible à l&amp;#8217;URL &lt;code&gt;http://votreserveur/cgi-bin/nagios3/status.cgi&lt;/code&gt;. Le login et le mot de passe sont à changer avec la commande suivante &lt;code&gt;htpasswd /etc/nagios3/htpasswd.users leloginsouhaite&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Où est la configuration&amp;#160;?&lt;/h3&gt;
&lt;p&gt;Le premier réflexe après avoir installé un logiciel, aussi automatisé que soit l&amp;#8217;installation, c&amp;#8217;est de regarder dans /etc/ si il y a pas un ou plusieurs fichiers de configuration. &lt;/p&gt;
&lt;p&gt;Gagné, il y a &lt;code&gt;/etc/nagios3/&lt;/code&gt; et &lt;code&gt;/etc/nagios-plugins/&lt;/code&gt; .&lt;/p&gt;
&lt;p&gt;Dans &lt;code&gt;/etc/nagios3/&lt;/code&gt; il y a la configuration générale de nagios&amp;#160;: les hosts et les services à surveiller, l&amp;#8217;interaction avec les systèmes externes, les personnes à prévenir en cas d&amp;#8217;accident, etc.&lt;/p&gt;
&lt;p&gt;Dans &lt;code&gt;/etc/nagios-plugins/&lt;/code&gt;, il y a la configuration du comportement des plugins. Je m&amp;#8217;en sers principalement pour avoir de la documentation sur les plugins disponibles et leurs arguments, mais vous pourriez en avoir besoin pour modifier le comportement d&amp;#8217;un plugin, ou créer le vôtre.&lt;/p&gt;
&lt;h3&gt;C&amp;#8217;est quoi ce bordel&amp;#8230;&lt;/h3&gt;
&lt;p&gt;Si vous commencez à plonger dans la configuration de &lt;code&gt;/etc/nagios3&lt;/code&gt;, vous allez vite déchanter&amp;#160;: il y a des fichiers de configuration aux noms pas très évocateurs, de services par défaut et génériques qui ne veulent rien dire. Par de panique, on va vous aider.&lt;/p&gt;
&lt;p&gt;Le point d&amp;#8217;entrée de la configuration dans Nagios est le fichier &lt;code&gt;/etc/nagios3/nagios.cfg&lt;/code&gt;. Pour des raisons évidentes, la configuration de Nagios n&amp;#8217;est pas intégralement présente dans ce fichier. Nagios inclut tous les fichiers qui se trouvent dans le dossier &lt;code&gt;/etc/nagios3/conf.d/&lt;/code&gt; (et récursivement dans les sous-dossiers).&lt;/p&gt;
&lt;h4&gt;Les hôtes&lt;/h4&gt;
&lt;p&gt;Les hôtes dans Nagios sont les machines à surveiller. Ce sont des éléments identifiés par leur nom. Il peut y avoir des hotes &amp;#8220;virtuels&amp;#8221; qui ne correspondent pas à une machine en particulier mais à un ensemble de résultat provenant de sondes que vous pouvez configurer.&lt;/p&gt;
&lt;p&gt;La configuration par défaut de Nagios définit un hôte générique. Cet hôte n&amp;#8217;est pas affiché dans l&amp;#8217;interface car c&amp;#8217;est un &amp;#8220;template&amp;#8221; de configuration. Vous faites &amp;#8220;hériter&amp;#8221; vos hôtes de ce service générique qui contient tout ce dont la plupart des hôtes ont besoin, et vous y rajoutez votre grain de sel.&lt;/p&gt;
&lt;p&gt;La configuration des hôtes dans Nagios se fait dans &lt;code&gt;/etc/nagios3/conf.d/&lt;/code&gt;. je vous conseille de créer un dossier &lt;code&gt;/etc/nagios3/conf.d/hosts/&lt;/code&gt;
et de créer ensuite un fichier par hôte, par commencer. Une fois que
vous serez plus à l&amp;#8217;aise avec le concept d&amp;#8217;hôte générique, vous pourrez
faire vos propres hôtes génériques, et factoriser un peu votre
configuration.&lt;/p&gt;
&lt;h4&gt;Les services&lt;/h4&gt;
&lt;p&gt;Les services dans Nagios sont les appels aux sondes que vous allez définir. Ces sondes sont déclarées dans les fichiers de configuration de &lt;code&gt;/etc/nagios-plugins/config/&lt;/code&gt; pour pointer vers des exécutables (généralement en Perl ou en Python) présents dans le répertoire &lt;code&gt;/usr/lib/nagios/plugins/&lt;/code&gt;, qui vont réaliser effectivement les tests.&lt;/p&gt;
&lt;p&gt;Je vous conseille, pour définir vos services, de créer le dossier &lt;code&gt;/etc/nagios3/conf.d/services/&lt;/code&gt; et placer un fichier par service à l&amp;#8217;intérieur.&lt;/p&gt;
&lt;p&gt;Les sondes des services peuvent prendre des arguments. Le plus courant est de leur donner (implicitement) l&amp;#8217;adresse de l&amp;#8217;hôte à tester, mais on peut aussi passer explicitement des arguments, comme par exemple le port à tester. (Si jamais vous avez déplacé le port d&amp;#8217;écoute de SSH. Comment ça vous l&amp;#8217;avez pas fait&amp;#160;?)&lt;/p&gt;
&lt;p&gt;Pour ceux qui en ont, les arguments des sondes sont déclarés dans &lt;code&gt;/etc/nagios-plugins/config/&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;Les groupes&lt;/h4&gt;
&lt;p&gt;Voilà le point central de votre configuration&amp;#160;: les groupes. Les groupes sont déclarés dans &lt;code&gt;/etc/nagios3/config/groups.cfg&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Un groupe dans Nagios est un moyen d&amp;#8217;appliquer un ensemble de services à un hôte &amp;#8220;d&amp;#8217;un coup&amp;#8221;. En gros, vous avez trois moyens d&amp;#8217;attacher vos services à vos hôtes&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Quand vous déclarez vos hôtes, vous mentionnez explicitement les services qu&amp;#8217;il doit posséder.&lt;/li&gt;
&lt;li&gt;Quand vous déclarez les services, vous mentionnez explicitement les hôtes sur lesquels le service doit s’appliquer&lt;/li&gt;
&lt;li&gt;Vous déclarez vos &amp;#8220;groupes&amp;#8221;, qui sont des ensembles de services, prêt à être appliqués à vos hôtes, vous spécifiez à quels groupes le service appartient, et vous spécifiez les hôtes présents dans le groupe.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans la suite, nous appliquerons la troisième solution.&lt;/p&gt;
&lt;h3&gt;Un petit exemple pour commencer&lt;/h3&gt;
&lt;p&gt;Sans commentaires, voici un petit exemple&amp;#160;:&lt;/p&gt;
&lt;h4&gt;Groupes&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;/etc/nagios3/groups.cfg&lt;/code&gt;&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;# A list of your web servers&lt;br /&gt;define hostgroup {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp; http-servers&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP servers&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; members&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host1 ; Link host to hostgroup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;# A list of your ssh-accessible servers&lt;br /&gt;define hostgroup {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp; ssh-servers&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSH servers&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; members&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host1,host2 ; Link host to hostgroup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;h4&gt;Hôtes&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;/etc/nagios3/conf.d/hosts/host1.cfg&lt;/code&gt;&amp;#160;:
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;define host {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; generic-host ; Name of host template to use&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192.168.1.11 ; Replace with your real host1 address !&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;code&gt;/etc/nagios3/conf.d/hosts/host2.cfg&lt;/code&gt;&amp;#160;:
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;define host {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; generic-host ; Name of host template to use&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192.168.1.12 ; Replace with your real host2 address !&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;h4&gt;Services&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;/etc/nagios3/conf.d/services/ssh.cfg&lt;/code&gt;&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;# check that ssh services are running&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssh-servers ; Link service to hostgroup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSH &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check_command&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check_ssh_port!22&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; generic-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;/etc/nagios3/conf.d/services/http.cfg&lt;/code&gt;&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;# check that ssh services are running&lt;br /&gt;define service {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http-servers ; Link service to hostgroup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check_command&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check_http&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; generic-service&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification_interval&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ; set &amp;gt; 0 if you want to be renotified&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3&gt;Toutes les sondes que vous voulez&amp;#160;!&lt;/h3&gt;
&lt;p&gt;Dans l&amp;#8217;exemple ci-dessus, j&amp;#8217;ai utilisé deux sondes génériques&amp;#160;: &lt;code&gt;check_ssh_port&lt;/code&gt; et &lt;code&gt;check_http&lt;/code&gt;. Toutes les sondes disponibles sont déclarées dans &lt;code&gt;/etc/nagios-plugins/conf/&lt;/code&gt;, ces sondes se présentent sous la forme de &amp;#8220;commandes&amp;#8221; que l&amp;#8217;on peut utiliser moment de la déclaration des services.&lt;/p&gt;
&lt;p&gt;Les sondes déclarées appellent en général les exécutables qui se trouvent dans &lt;code&gt;/usr/lib/nagios/plugins/&lt;/code&gt;. Souvent, plusieurs sondes sont déclarées pour un même exécutable, mais avec des paramètres différents (par exemple &lt;code&gt;check_ssh&lt;/code&gt; et &lt;code&gt;check_ssh_port&lt;/code&gt; qui permet de spécifier le port en argument).&lt;/p&gt;
&lt;p&gt;Pour afficher les paramètres déclarés par les sondes, vous pouvez éditer les fichiers de configuration présents dans &lt;code&gt;/etc/nagios-plugins/conf/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pour déclarer vos propres sondes à partir des exécutables, vous pouvez afficher les arguments disponible pour les exécutables de &lt;code&gt;/usr/lib/nagios/plugins/&lt;/code&gt; en lançant simplement le fichier exécutable avec le paramètre &lt;code&gt;--help&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Les alertes&lt;/h3&gt;
&lt;p&gt;Pour l&amp;#8217;instant notre Nagios est muet. Il peut alerter sur l&amp;#8217;interface web, mais ne vous envoie pas de mails pour se plaindre que l&amp;#8217;un des services est tombé.&lt;/p&gt;
&lt;p&gt;Les alertes dans Nagios se configurent dans /etc/nagios3/conf.d/contacts.cfg, dans ce fichier sont définis les personnes à contacter en cas de problème, et quels sont les types d&amp;#8217;alertes à recevoir par ces personnes.&lt;/p&gt;
&lt;p&gt;Vous pouvez prendre exemple sur le contact par défaut pour créer vos propres contacts&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;define contact {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contact_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_notification_period&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24x7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host_notification_period&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24x7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_notification_options&amp;nbsp;&amp;nbsp;&amp;nbsp; w,u,c,r&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host_notification_options&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d,r &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; service_notification_commands&amp;nbsp;&amp;nbsp; notify-service-by-email&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host_notification_commands&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notify-host-by-email&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; email&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root@localhost&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;N&amp;#8217;oubliez pas de rajouter vos nouveaux contact au groupe de contact de Nagios&amp;#160;:
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;define contactgroup {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contactgroup_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; admins&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nagios Administrators&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; members&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;Une configuration plus fine peut être réalisée au niveau des alertes, ou de l&amp;#8217;escalade des alertes, suivez ce lien pour en savoir plus&amp;#160;: &lt;a hreflang=&quot;en&quot; href=&quot;http://nagios.sourceforge.net/docs/3_0/escalations.html&quot;&gt;Notifications Escalations&lt;/a&gt;.
&lt;h3&gt;Pour conclure&lt;/h3&gt;
&lt;p&gt;En guise de conclusion et pour aller plus loin, je vous conseille de faire comme vous en avez l&amp;#8217;habitude sous Debian&amp;#160;: lire les documentations qui sont incluses avec le paquet dans &lt;code&gt;/usr/share/docs/nagios*&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Dans le prochain billet de cette série, je détaillerai l&amp;#8217;installation et la réalisation d&amp;#8217;une configuration simple pour Puppet, qui nous servira pour pouvoir installer facilement Munin sur l&amp;#8217;ensemble des machines du parc.&lt;/p&gt;
&lt;p&gt;Ah oui, n&amp;#8217;oubliez pas de relancer le service &lt;code&gt;nagios3&lt;/code&gt; après avoir changé la configuration pour l&amp;#8217;appliquer&amp;#160;!&lt;/p&gt;
&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/08/17/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-3-%3A-Puppet&quot; rel=&quot;next&quot;&gt;Lire la partie suivante&amp;#160;: Puppet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;https://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt;.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Le monitoring sous Debian avec Nagios et Munin (Puppet en guest star) : de A à Z - Partie 1 : introduction</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/07/04/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-1-%3A-introduction</link>
        <guid isPermaLink="false">urn:md5:7ad5ec86dc049c4a1980fb0e3b0e5629</guid>
        <pubDate>Thu, 04 Jul 2013 19:33:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>debian</category>
                  <category>guide</category>
                  <category>monitoring</category>
                  <category>munin</category>
                  <category>nagios</category>
                  <category>puppet</category>
                  <category>serie-monitoring-nagios-munin-puppet</category>
                  <category>serveur</category>
                <description>&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Le monitoring. Graal des administrateurs système dès qu&amp;#8217;un parc de machines commence à se constituer. Avec ce petit guide, vous allez découvrir que même avec seulement trois machines, on peut faire du monitoring. Même avec des machines mobiles ou pas toujours allumées, on peut faire du monitoring. Même avec les machines des clients, on peut faire du monitoring.&lt;/p&gt;
&lt;p&gt;Pour pouvoir intervenir en cas de problème, il faut déjà savoir qu&amp;#8217;il y a un problème, c&amp;#8217;est le but du monitoring.&lt;/p&gt;          &lt;h3&gt;Cas d&amp;#8217;étude&lt;/h3&gt;
&lt;p&gt;Vous gérez un parc. Ça peut être vos propres machines, ou les machines de vos clients. Vous pouvez avoir des serveurs ou des postes de travail, ces machines ne sont pas forcément toujours allumées, mais quand elles fonctionnent il faut avoir un retour sur leur état de santé. Vous aimeriez bien centraliser tout ça, mais vous ne savez pas comment faire. Voici comment.&lt;/p&gt;
&lt;h3&gt;Définitions / Présentations&lt;/h3&gt;
&lt;p&gt;Lorsqu&amp;#8217;on parle de monitoring, on parle bien entendu de surveillance du système. Mais pour s&amp;#8217;assurer de l&amp;#8217;état du système, il faut deux choses&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Un collecteur (&amp;#8220;node&amp;#8221;), qui va au moyens de différentes sondes remonter les informations brutes sur les composants du système à surveiller. Ça peut être très bas niveau la température du CPU, ou une sonde élaborée comme le temps de réponse à un ping. Dans tous les cas, le collecteur seul ne suffit pas à dire &amp;#8220;je fais du monitoring&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;Le concentrateur (&amp;#8220;master&amp;#8221;), qui va récupérer les informations du collecteur, et générer les alertes, le concentrateur va pouvoir vous afficher une vue synthétique de l&amp;#8217;ensemble des machines que vous surveillez.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;Dans ce petit guide, le collecteur sera Munin (en partie), et le concentrateur sera Nagios 3 (en partie). Je dis &amp;#8220;en partie&amp;#8221; parce que tout n&amp;#8217;est pas aussi simple, et que Nagios et Munin vont assurer des rôles complémentaires étant chacun dans leur domaine à la fois &amp;#8220;collecteur&amp;#8221; et &amp;#8220;concentrateur&amp;#8221;.&lt;/div&gt;&lt;h4&gt;Munin&amp;#160;: le surveillant dans la cour&lt;/h4&gt;
&lt;div&gt;Munin est à la base un collecteur, c&amp;#8217;est à dire qu&amp;#8217;il va, au moyens de sondes déployées sur les postes à surveiller (&amp;#8220;munin-node&amp;#8221;), écrire des fichiers RRD. Ces fichiers pourront ensuite être exploités par un concentrateur (&amp;#8220;munin&amp;#8221; tout court) pour dessiner des graphes (&amp;#8220;munin-graph&amp;#8221;) et/ou envoyer des alertes à des systèmes externes.&lt;/div&gt;&lt;h4&gt;Nagios&amp;#160;: le mirador&lt;/h4&gt;
&lt;p&gt;Même si on peut installer un client Nagios servant de collecteur sur les postes à surveiller, Nagios n&amp;#8217;a pas pour vocation d&amp;#8217;observer directement les systèmes. Il est prévu pour effectuer des sondages &amp;#8220;externes&amp;#8221; des systèmes (tel port est-il ouvert, tel service répond-il correctement&amp;#8230;).&lt;/p&gt;
&lt;p&gt;De ce fait, Nagios va être limité dans les accès au système (comment remonter des alertes sur la température du disque, en conservant un point de vue externe&amp;#160;?) et va donc dépendre des sondes locales, comme celles fournies par Munin.&lt;/p&gt;
&lt;h4&gt;Puppet&amp;#160;: le directeur de l&amp;#8217;établissement&lt;/h4&gt;
&lt;p&gt;On ne l&amp;#8217;a pas encore présenté. Puppet est un logiciel permettant de répliquer de la configuration sur un ensemble de postes. Puppet permet de définir une certaine granularité dans la configuration&amp;#160;: il est possible de créer des &amp;#8220;groupes&amp;#8221; de configuration, pour donner aux postes gérés la configuration qu&amp;#8217;il leur faut, potentiellement différente d&amp;#8217;une machine à l&amp;#8217;autre (un serveur web et un serveur mail n&amp;#8217;ont pas les mêmes besoins).&lt;/p&gt;
&lt;h3&gt;Le fonctionnement&lt;/h3&gt;
&lt;h4&gt;En résumé&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Nagios va collecter des informations externes sur le système et recevoir des alertes de Munin.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;Munin (&amp;#8220;munin-node&amp;#8221;) va collecter des informations plus précises sur le fonctionnement de la machine &amp;#8220;à chaud&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;Un &amp;#8220;master&amp;#8221; Munin va centraliser toutes les informations récoltées par les sondes &amp;#8220;munin-nodes&amp;#8221; et envoyer les alertes à Nagios.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;Puppet va se charger d&amp;#8217;uniformiser la configuration sur l&amp;#8217;ensemble des machines sur lesquelles Munin (munin-node) est installé (mieux que le copier/coller&amp;#160;: on change une fois et c&amp;#8217;est toutes les machines qui changent).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Les machines&lt;/h4&gt;
&lt;div&gt;Les machines que l&amp;#8217;on suppose présentes sont&amp;#160;:&lt;/div&gt;&lt;div&gt;
&lt;ul&gt;&lt;li&gt;Les machines à administrer (&amp;#8220;nodes&amp;#8221;) sur lesquelles on mettra les &amp;#8220;munin-nodes&amp;#8221; et les &amp;#8220;puppet-nodes&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;Le &amp;#8220;puppet-master&amp;#8221; qui va envoyer aux &amp;#8220;nodes&amp;#8221; la configuration à appliquer&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;Le &amp;#8220;master&amp;#8221; Munin qui va centraliser les informations des sondes, et éventuellement faire des graphes.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;Le concentrateur nagios, qui va également effectuer les tests externes sur les machines.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div&gt;Notez que le Puppet master, le master Munin, et Nagios peuvent être portés par la même machine (puppet master, master munin, nagios).&lt;/div&gt;&lt;h3&gt;Dans la partie suivante&lt;/h3&gt;
&lt;div&gt;&lt;p&gt;Dans la prochaine partie, nous verront comment installer et configurer Nagios et ses sondes. Nous verront ensuite dans les parties suivantes le détail de la configuration de Munin, sa communication avec Nagios, et la réplication de sa configuration avec Puppet.&lt;/p&gt;
&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/07/07/Le-monitoring-sous-Debian-avec-Nagios-et-Munin-%28Puppet-en-guest-star%29-%3A-de-A-%C3%A0-Z-Partie-2-%3A-Nagios&quot; rel=&quot;next&quot;&gt;Lire la partie suivante&amp;#160;: Nagios&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;https://uname.pingveno.net/blog/index.php/tag/serie-monitoring-nagios-munin-puppet&quot; rel=&quot;tag&quot;&gt;Voir l&amp;#8217;ensemble des articles de la série&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</description>
        
              </item>
          <item>
        <title>Git push origin master : erreur 22</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2011/11/26/Git-push-origin-master-%3A-erreur-22</link>
        <guid isPermaLink="false">urn:md5:f9abd916b81a4994aa710d43840fa446</guid>
        <pubDate>Sat, 26 Nov 2011 18:04:00 +0100</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Hacks</category>
                          <category>astuce</category>
                  <category>configuration</category>
                  <category>git</category>
                  <category>note</category>
                  <category>serveur</category>
                  <category>sysadmin</category>
                <description>          &lt;p&gt;Petite note pour eux qui ont comme moi suivi les conseils et les exemples sur Internet pour installer un serveur Git avec WebDAV, il faut savoir que c&amp;#8217;est comme avec Subversion, le serveur WebDAV aime pas trop les protocoles loufoques (https, as-t-on idée&amp;#160;?), et qu&amp;#8217;il faut lui expliquer gentiment de faire de la substitution de protocole, pour le calmer.&lt;/p&gt;
Bref, comme j&amp;#8217;ai cherché pendant trois heures, je vous livre la solution à cette erreur 22, il faut expliquer à Apache de remplacer https par http lorsqu’il passe à WebDAV.&lt;br /&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;RequestHeader edit Destination ^https http early&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;En principe ça ne change rien sur le fait que la connexion soit chiffrée, ça calme juste le module WebDAV derrière, pour qu&amp;#8217;il retrouve ses petits. Autre petite astuce, pour éviter que un client un peu bête ne passe sur le http parce qu&amp;#8217;il a pas compris&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;SetEnv redirect-carefully 1&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Et en exclusivité mondiale, je vous livre ma configuration, au cas où ça vous serait utile&amp;#160;:&lt;/p&gt;
&lt;p&gt;Pour Subversion&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetEnv redirect-carefully 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RequestHeader edit Destination ^https http early&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory /path/to/repos/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options Indexes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from all&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Location /repos&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAV svn&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SVNPath /path/to/repos/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetEnv redirect-carefully 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthType Basic&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Authname &quot;Subversion repository&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthUserFile /path/to/passwd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthzSVNAccessFile /path/to/authz&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Repository accessible en lecture sans identification&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LimitExcept GET PROPFIND OPTIONS REPORT&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Require valid-user&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LimitExcept&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Location&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour Git&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetEnv redirect-carefully 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RequestHeader edit Destination ^https http early&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alias /repos /path/to/repos&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory /path/to/repos&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options Indexes MultiViews&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from all&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Location /repos&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DAV on&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetEnv redirect-carefully 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthType Basic&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Authname &quot;Git repository&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AuthUserFile /path/to/repos&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Oui, normalement là il faudrait une gestion des groupes pour read/write mais bon...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;lt;LimitExcept GET PROPFIND OPTIONS REPORT&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Require valid-user&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;lt;/LimitExcept&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Location&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description>
        
              </item>
          <item>
        <title>VNC inversé et traversée de pare feu</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2010/07/03/VNC%C2%A0invers%C3%A9-et-travers%C3%A9e-de-pare-feu</link>
        <guid isPermaLink="false">urn:md5:fd7e956ff3433f118ecd8208a840e3ab</guid>
        <pubDate>Sat, 10 Jul 2010 11:33:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>astuce</category>
                  <category>serveur</category>
                  <category>vnc</category>
                <description>&lt;p&gt;Ce billet décrit en détail comment mettre en place un dispositif de
contrôle à distance via le logiciel VNC, fonctionnant en mode inversé
(le client est serveur et le serveur est client) en traversant les
deux pare feu à la fois autour du client et du serveur, en se servant
d'une machine relais.&lt;/p&gt;          &lt;h3&gt;Définitions&lt;/h3&gt;
&lt;p&gt;Dans la suite de l'article je vais utiliser le terme « client » pour désigner la machine qui va réaliser le contrôle, et « serveur » pour la machine à administrer. Comme nous fonctionnerons en VNC inversé, ça sera le serveur qui demandera la connexion au client qui écoutera les demandes de connexion.&lt;/p&gt;
&lt;h3&gt;Prérequis&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;La machine « cliente », celle qui contrôlera la première, doit être sous Linux, ou un autre système intelligent. Il est aussi possible je pense d'avoir un truc comme cygwin, ou alors un moyen efficace de créer des tubes SSH.&lt;/li&gt;
&lt;li&gt;La machine relais doit avoir un accès SSH, avec la bonne configuration de ce dernier pour qu'il autorise les tunnels à ressortir, mais nous y reviendrons.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Problématique&lt;/h3&gt;
&lt;p&gt;Comment mettre en place un contrôle à distance sachant que :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Les deux machines sont derrière un NAT qui nous empêche d'entrer.&lt;/li&gt;
&lt;li&gt;Que nous n'avons pas accès aux NAT pour forwarder des ports.&lt;/li&gt;
&lt;li&gt;La prise de contrôle doit être décidée par le client, sans avoir besoin que le serveur intervienne, ou que l'utilisateur lance le serveur.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nous avons ici un triple problème : le NAT du serveur nous empêche de rentrer, on ne peut pas ouvrir de ports, et le NAT du client nous empêche aussi de rentrer, nous empêchant de créer la connexion « inversée » (où c'est le client qui écoute et le serveur qui connecter).&lt;/p&gt;
&lt;p&gt;Heureusement nous avons sous la main un serveur tiers pour faire relais, et la machine cliente implémente la norme POSIX (comprendre : l'OS est un unix et il est intelligent).&lt;/p&gt;
&lt;h3&gt;Solution&lt;/h3&gt;
&lt;p&gt;Voici comment on va procéder :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Mettre en place un VNC inversé sur le client, mais qui écoute ... en local.&lt;/li&gt;
&lt;li&gt;Créer un tube SSH du port d'écoute local vers le serveur relais.&lt;/li&gt;
&lt;li&gt;Expliquer au serveur relais de faire sortir le tube.&lt;/li&gt;
&lt;li&gt;Faire se connecter la machine à administrer sur le port ouvert du relais, forwardé par nos soins.&lt;/li&gt;
&lt;/ul&gt;
Ce dessin réalisé par mes soins devrait vous aider à y voir plus clair :&lt;br /&gt;&lt;a title=&quot;vnc-inverse-relais.png&quot; href=&quot;https://uname.pingveno.net/blog/public/schemas/vnc-inverse-relais.png&quot;&gt;&lt;img title=&quot;vnc-inverse-relais.png, juil. 2010&quot; alt=&quot;vnc-inverse-relais.png&quot; src=&quot;https://uname.pingveno.net/blog/public/schemas/.vnc-inverse-relais_m.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Installation du client et du serveur&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;
Le serveur : la machine serveur étant sous windows, on va utiliser UltraVNC, disponible ici : &lt;a hreflang=&quot;en&quot; href=&quot;http://www.uvnc.com/download/index.html&quot;&gt;http://www.uvnc.com/download/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Le client : la machine cliente est sous Linux, on va utiliser vnc4viewer, qui est dans les paquets de la plupart des distributions&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Vérification de la configuration du relais&lt;/h3&gt;
&lt;p&gt;Alors là je suis désolé pour ceux qui n'ont pas d'accès root sur le relais, il leur sera impossible de vérifier à moins de créer le tube SSH et de vérifier qu'il ressort (en lui parlant dedans avec netcat par exemples).&lt;/p&gt;
&lt;p&gt;Le serveur SSH doit en effet posséder le GatewayPorts activé, pour que les sockets SSH puissent être bindés vers l'extérieur et non pas accessibles seulement en local. Il doit bien y avoir un moyen de crée un second tube pour faire sortir la socket locale pour contourner ce problème, mais ici j'ai fait au plus simple : j'ai rajouté GatewayPorts yes dans la configuration, et relancé le serveur SSH.&lt;/p&gt;
&lt;p&gt;Vérifiez donc la présence de la ligne suivante dans votre &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; :&lt;br /&gt;&lt;code&gt;GatewayPorts yes&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Lancement du client et essai du tube&lt;/h3&gt;
&lt;p&gt;Si tout s'est bien déroulé, vous avez installé vnc4viewer sur le client linux, et vous êtes prêt à le lancer.&lt;/p&gt;
&lt;p&gt;Donc, lancez le avec la commande &lt;code&gt;vncviewer -listen&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Lançons maintenant le tube, la commande est ésotérique mais je vais essayer de l'expliquer : &lt;br /&gt;&lt;code&gt;ssh -f -R*:5500:localhost:550 monlogin@serveurrelais.com sleep 3600&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Le -f indique que nous voulons créer un tube SSH&lt;/li&gt;
&lt;li&gt;-R indique le sens du tube, même si les sockets sont bidirectionnelles, il faut indiquer où est l'entrée (qui écoute) et où est la sortie (qui envoie des données en réponse)&lt;/li&gt;
&lt;li&gt;Le * signifie qu’on écoute tous les hôtes en sortie, et pas seulement localhost, c’est nécessaire dans notre cas pour que le serveur windows puisse s'y connecter (mais il agit alors comme un client, puisque on est en inversé, c'est pour ça qu'il va se connecter sur l'entrée, vous suivez ?)&lt;/li&gt;
&lt;li&gt;localhost indique l'endroit où brancher l'entrée, ici localhost c'est le serveur relais, on s'y connecte et au lieu de rediriger le tube vers un éventuel autre serveur, on crée le tube local 4le trait vert du dessin5 pour router sur la bonne sortie sur la même machine&lt;/li&gt;
&lt;li&gt;ensuite 5500 c'est le port de sortie, de l'autre côté, c'est la machine linux avec le client qui écoute (puisque on est en inversé)&lt;/li&gt;
&lt;li&gt;La suite indique à quel serveur on va se connecter et avec quel login&lt;/li&gt;
&lt;li&gt;Enfin, le sleep 3600 est la commande à faire exécuter par le serveur pour maintenir le tube ouvert ; en effet, le client SSH permet de créer un tube à usage unique, juste pour une commande, comme on veut y faire passer plein de trucs dedans, on va lancer cette commande qui ne fait rien mais qui permet au tube de rester ouvert. La valeur 3600 correspond à 1h.&lt;/li&gt;
&lt;/ul&gt;
En résumé, cette commande s'utilise ainsi :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;ssh -f -Rportdistant:hoteacontacter:portlocal moi@machinedistante commandealancer&lt;/code&gt; dans un sens&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ssh -f -Fportlocal:hoteacontacter:portdistant moi@machinedistante commandealancer&lt;/code&gt; dans l' autre sens&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lancez la commande précédemment décrite, et essayez le tube. Pour essayer le tube, faites simplement :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;netcat serveurrelais.com 5500&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si tout fonctionne, vous devriez voir le client en écoute vous dire qu'il a reçu de la visite :&lt;br /&gt;&lt;code&gt;Sat Jul&amp;nbsp; 3 18:17:12 2010&lt;br /&gt;&amp;nbsp;CConn:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Accepted connection from 0.0.0.0::45907&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Lancement automatique du serveur vers le client en écoute&lt;/h3&gt;
&lt;p&gt;J'ai choisit de créer une « Tâche planifée » Windows pour que le serveur sous windows tente de contacter le client à travers le tube.&lt;/p&gt;
&lt;p&gt;La commande à lancer est toute simple : &lt;code&gt;&quot;c:\Program Files\UltraVNC\winvnc.exe&quot; -connect ipserveurrelais::5500&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Nous avons mit en place un système particulier : le serveur est client, le client est serveur, le serveur contacte le client à intervalles réguliers, et c'est le client qui décide quand le serveur va être contacté. Ce branchement peut servir à mettre en place une backdoor sur l'ordinateur serveur, cependant le changement de résolution et de fond d'écran lors de l'établissement de la connexion avec le client devrait faire tiquer celui qui utilise le serveur à ce moment là.&lt;/p&gt;
&lt;h3&gt;Notes, références, etc&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://www.harobed.org/index.php?2007/10/14/185-vnc-inverse-prise-de-controle-a-distance&quot;&gt;http://www.harobed.org/index.php?2007/10/14/185-vnc-inverse-prise-de-controle-a-distance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.uvnc.com/index.html&quot;&gt;http://www.uvnc.com/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://doc.ubuntu-fr.org/vnc&quot;&gt;http://doc.ubuntu-fr.org/vnc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://doc.ubuntu-fr.org/ssh_vnc&quot;&gt;http://doc.ubuntu-fr.org/ssh_vnc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;</description>
        
              </item>
      </channel>
</rss>
