{"id":163,"date":"2017-06-05T13:05:22","date_gmt":"2017-06-05T12:05:22","guid":{"rendered":"https:\/\/www.riwan.fr\/?page_id=163"},"modified":"2017-06-05T14:46:08","modified_gmt":"2017-06-05T13:46:08","slug":"nagios_projet","status":"publish","type":"page","link":"https:\/\/www.riwan.fr\/index.php\/nagios_projet\/","title":{"rendered":"Supervision &#8211; Projet"},"content":{"rendered":"<p><strong>Pr\u00e9sentation<\/strong><\/p>\n<p>Nagios permet de superviser un ensemble de machines, et d&rsquo;envoyer des alertes lorsque des seuils sont atteints.<\/p>\n<p>Il s&rsquo;agit d&rsquo;un outil critique lorsque l&rsquo;on fait de l&rsquo;h\u00e9bergement, car il faut avoir une visibilit\u00e9 sur la sant\u00e9 de l&rsquo;ensemble du parc.<\/p>\n<p><strong>Contexte<\/strong><\/p>\n<p>J&rsquo;ai travaill\u00e9 avec Nagios en production pendant toute mon alternance ainsi que mon stage. Il supervise plus de 300 machines et 2000 services en permanence.<\/p>\n<p><strong>Projet<\/strong><\/p>\n<p>Il s&rsquo;agissait d&rsquo;administrer le serveur Nagios, d&rsquo;ajouter\/supprimer des h\u00f4tes et services en fonctions de l&rsquo;\u00e9tat de la production.<\/p>\n<p>Nagios \u00e9tant un outil utilisable sur Linux, l&rsquo;ensemble de la configuration se fait par fichier.<\/p>\n<p>On d\u00e9finis un nouvel host comme ceci, \u00e0 ajouter dans la configuration de Nagios :<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/06\/nagios_host.png\" alt=\"Nagios host\" \/><\/p>\n<p>Le template par d\u00e9faut &lsquo;generic-host&rsquo; d\u00e9fini l&rsquo;action \u00e0 effectuer par d\u00e9faut sur un host, &lsquo;check_alive&rsquo; (ping) ainsi que sa fr\u00e9quence.<\/p>\n<p>A chaque nouvel ajout il suffit donc d&rsquo;ins\u00e9rer un host dans ce fichier afin de cr\u00e9er un nouvel host dans Nagios.<\/p>\n<p>Les services permettent de faire des checks plus pouss\u00e9s, notamment en r\u00e9cup\u00e9rant le r\u00e9sultat de scripts ex\u00e9cut\u00e9s sur l&rsquo;h\u00f4te distant, via un agent.<\/p>\n<p>Voici le template d&rsquo;un service suivant le m\u00eame pattern :<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/06\/nagios_service.png\" alt=\"Nagios service\" \/><\/p>\n<p>En sp\u00e9cifiant le m\u00eame host que pr\u00e9c\u00e9demment, Nagios va utiliser l&rsquo;adresse correspondante pour effectuer ses contr\u00f4les. L&rsquo;agent \u00e0 install\u00e9 sur l&rsquo;h\u00f4te distant est NRPE, qui permet d&rsquo;associer le nom d&rsquo;un check \u00e0 une commande linux.<\/p>\n<p>Par exemple sur cette h\u00f4te, on a install\u00e9 et configur\u00e9 l&rsquo;agent NRPE pour que la commande check_apache2 fasse appel \u00e0 un script local:<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/06\/check_apache2.png\" alt=\"Check apache\" \/><\/p>\n<p>Le script peut alors retourner un code erreur 2 si erreur critique, 1 si avertissement et 0 si tout va bien.<\/p>\n<p>La plupart des scripts NRPE sont disponibles gratuitement, mais pour des besoins internes j&rsquo;ai eu \u00e0 \u00e9crire plusieurs scripts moi-m\u00eame.<\/p>\n<p>Une fois que l&rsquo;on a d\u00e9clar\u00e9 tous les hosts et services qui doivent \u00eatre supervis\u00e9s, on peut v\u00e9rifier l&rsquo;\u00e9tat global du parc gr\u00e2ce \u00e0 l&rsquo;interface web :<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/06\/nagios_overvie.png\" alt=\"Nagios overview\" \/><\/p>\n<p>Chaque seuil d&rsquo;alerte peut \u00eatre contr\u00f4l\u00e9 directement dans le script qui renvoie l&rsquo;\u00e9tat d&rsquo;un service.<\/p>\n<p>Les contacts sont un objet qui se pr\u00e9sente sous la m\u00eame forme qu&rsquo;un host :<\/p>\n<p><img src=\"https:\/\/www.riwan.fr\/wp-content\/uploads\/2017\/06\/contazc_nagios.png\" alt=\"Contact nagios\" \/><\/p>\n<p>Par d\u00e9faut Nagios envoie des e-mails pour avertir d&rsquo;un probl\u00e8me, mais il est possible de configurer d&rsquo;autres services comme les SMS.<\/p>\n<p>Les contacts \u00e0 utiliser peuvent \u00eatre sp\u00e9cifi\u00e9s pour chaque host\/service ou alors dans le template &lsquo;generic-host&rsquo; ou &lsquo;generic-service&rsquo; par d\u00e9faut.<\/p>\n<p>Il est important de mettre des seuils d&rsquo;alerte r\u00e9alistes, et de les mettre \u00e0 jour r\u00e9guli\u00e8rement en fonction du besoin. On peut tr\u00e8s vite se retrouver enseveli sous des tonnes de mails Nagios et de faux-positifs qu&rsquo;on ne prend plus le temps de lire, et qui peuvent cacher un r\u00e9el incident.<\/p>\n<p><strong>Comp\u00e9tences li\u00e9es<\/strong><\/p>\n<p><a href=\"https:\/\/www.riwan.fr\/index.php\/supervision\/\">Nagios<\/a><br \/>\n<a href=\"https:\/\/www.riwan.fr\/index.php\/linux\/\">GNU\/Linux<\/a><\/p>\n<p><strong><a href=\"https:\/\/www.riwan.fr\/#realisations\">Retour aux r\u00e9alisations<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pr\u00e9sentation Nagios permet de superviser un ensemble de machines, et d&rsquo;envoyer des alertes lorsque des seuils sont atteints. Il s&rsquo;agit d&rsquo;un outil critique lorsque l&rsquo;on fait de l&rsquo;h\u00e9bergement, car il faut avoir une visibilit\u00e9 sur la sant\u00e9 de l&rsquo;ensemble du parc. Contexte J&rsquo;ai travaill\u00e9 avec Nagios en production pendant toute mon alternance ainsi que mon<a href=\"https:\/\/www.riwan.fr\/index.php\/nagios_projet\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/pages\/163"}],"collection":[{"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/comments?post=163"}],"version-history":[{"count":6,"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/pages\/163\/revisions"}],"predecessor-version":[{"id":189,"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/pages\/163\/revisions\/189"}],"wp:attachment":[{"href":"https:\/\/www.riwan.fr\/index.php\/wp-json\/wp\/v2\/media?parent=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}