Linuxconomie 101 – Août 2009 – NAGIOS (Monitoring Réseau)

Introduction

La surveillance d’un réseau informatique de moyenne ou grande taille peut s’avérer cauchemardesque… Il est alors important de se doter d’un bon logiciel de surveillance réseau afin de vous aider, il existe certes des logiciels propriétaires ou vous devrez débourser des milliers de dollars en licences et en support technique. Si vous désirez plutôt opter pour un logiciel open source, gratuit et qui offre des performances exceptionnelles comparables au solutions propriétaires, Nagios est la solution tout indiqué pour être votre assistant.

Mon but n’est pas de vous expliquer les concepts de la surveillance réseau mais de vous démontrer des cas pratiques qui pourrons vous aidez lors de l’implantation de votre serveur Nagios. Plusieurs excellents sites web vous expliquent déjà le concept de la supervision réseau.

Installation

L’installation de Nagios était, auparavant, un exercice fort difficile, il fallait installer Nagios, ensuite il fallait installer les "add-ons" et les "plugins" et s’assurer que toutes les dépendances soient satisfaites, cela devenait alors un véritable puzzle ou l’on ne voyait pas la fin. Jusqu’au temps ou je tombe sur le site web de "" ou quelques contributeurs Linux ont décidé d’offrir une distribution CentOS 5.2 avec Nagios, les "add-ons" et "Plugins" tous déjà installés et prêt à fonctionner. Voici ce qui est déjà installé avec cette distribution:

  • Nagios: Coeur de l’application de surveillance réseau.

    • Nagios Plug-in: Plug-in pour effectuer le monitoring des équipements réseaux.
    • Centreon: Interface web pour Nagios
    • Nagvis: Outil permettant de configurer des "maps" réseaux.
    • Nareto: Excellent outil permettant de créer des rapports de disponibilité.
    • NDOUtils: Module dans Nagios permettant le stockage de données dans une base MySQL.
    • NPRE: Module permettant le monitoring actif des équipements réseaux.
    • NSCA: Module permettant le monitoring passif des équipements réseaux.
    • NSClient++: Application permettant d’effectuer le monitoring de machines Windows.

    Téléchargez la dernière version de "Fully automated Nagios" sous forme d’ISO sur le site web et procédez à l’installation en téléchargeant le documentation à cet adresse web :

    Les commandes utiles

    • Service nagios start (démarrer le service Nagios)
      • Service nagios stop (arrêter le service Nagios)
      • Service nagios restart (redémarrer le service Nagios)
      • Nagios –v /etc/nagios/nagios.cfg (tester la configuration de Nagios)
      • System-config-network (configurer adresse IP statique)
      • Service network restart (Reset des interfaces réseaux)

    La configuration

    Si l’installation est plutôt conviviale et facile, il en est autrement pour la configuration. Tout se fait principalement en ligne de commande à travers divers fichiers, je vais vous montrer la syntaxe général de chaque fichier en tirant un extrait de configuration du fichier. Si vous avez besoin d’aide n’hésitez pas à me laissez vos questions.

    Nagios.cfg (/etc/nagios)

    Le fichier de configuration principal de Nagios. Il contient beaucoup d’informations qui vous permettent de le configurer. Par exemple : de modifier l’intervalle de temps entre chaque vérification de services, d’ajouter des fichiers de configurations, etc. En voici un petit extrait. À consulter…


    cfg_file=/etc/nagios/contactgroups.cfg
    cfg_file=/etc/nagios/contacts.cfg
    cfg_file=/etc/nagios/dependencies.cfg
    cfg_file=/etc/nagios/escalations.cfg
    cfg_file=/etc/nagios/hostgroups.cfg
    cfg_file=/etc/nagios/hosts.cfg
    cfg_file=/etc/nagios/services.cfg
    cfg_file=/etc/nagios/timeperiods.cfg
    cfg_file=/etc/nagios/servicegroups.cfg


    Commands.cfg (/etc/nagios)

  • Le fichier contient toutes les commandes génériques (définition des commandes) qui vous permettent de récupérer de l’information sur vos hôtes et services. Vous aurez probablement à rajouter des commandes dans ce fichier qui vous permettront de pouvoir superviser différents hôtes et services.


    Check_nt command definition

    define command{
    command_name check_nt
    command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$ $ARG3$
    }


    Contactgroups.cfg (/etc/nagios)

  • Dans ce fichier, vous pouvez créer des groupes de contact qui regroupent plusieurs personnes qui seront contactés par Nagios en cas de défaillance d’un hôte ou d’un service.


    define contactgroup {
    contactgroup_name serveur-admin
    alias Serveurs
    members nagios-admin,Vincent Lepine
    }
    define contactgroup {
    contactgroup_name routeurs-admin
    alias Routeurs
    members nagios-admin,Vincent Lepine
    }


    Contacts.cfg (/etc/nagios)

    Le fichier contient les personnes ressources qui seront contactés automatiquement par Nagios en cas de défaillance d’un hôte ou d’un service. Vous déterminez également, dans ce fichier, la méthode dont le contact doit être avisé (Courriel, SMS, Netsend,etc.). Vous devez configurer sendmail sur votre serveur Nagios pour qu’il sert de relais SMTP afin d’envoyer des courriels de notifications (voir plus bas).


    define contact{
    contact_name nagios-admin
    alias Nagios Admin
    service_notification_period 24×7
    host_notification_period 24×7
    service_notification_options w,u,c,r
    host_notification_options d,r
    service_notification_commands notify-by-email
    host_notification_commands host-notify-by-email
    email [email protected]
    }

    define contact{
    contact_name Vincent Lepine
    alias Vincent Lepine
    service_notification_period 24×7
    host_notification_period 24×7
    service_notification_options w,u,c,r
    host_notification_options d,r
    service_notification_commands notify-by-email
    host_notification_commands host-notify-by-email
    email [email protected]
    }


    Hostgroups.cfg (/etc/nagios)

    Ce fichier est bien utile car il vous permet de structurer efficacement vos hôtes par groupes d’hôtes. Par exemple : si votre entreprise possède plusieurs bureaux dans différentes villes, ce fichier vous permet alors de regrouper les hôtes par ville ou région afin de mieux vous retrouver dans Nagios.


    define hostgroup {
    hostgroup_name Serveurs Laval
    alias Serveurs Laval
    members serveur1
    }
    define hostgroup {
    hostgroup_name Serveurs Quebec
    alias Serveurs Quebec
    members serveur2
    }
    define hostgroup {
    hostgroup_name Serveur Ottawa
    alias Serveurs Ottawa
    members serveur3
    }


    Hosts.cfg (/etc/nagios)

  • Le fichier contient tous les hôtes (serveurs, routeurs et commutateurs) de votre réseau informatique. Dans le cas présent, j’ai préféré créer d’autres fichiers de configuration telles que « routeurs.cfg » afin d’éviter de surcharger le fichier hosts.cfg qui peut devenir volumineux si vous possédez un vaste parc informatique. Si vous procéder ainsi, il est alors important de ne pas oublier de modifier le fichier nagios.cfg pour indiquer ou trouver le fichier précédemment créé.


    define host{
    name generic-host
    notifications_enabled 1
    event_handler_enabled 1
    flap_detection_enabled 1
    failure_prediction_enabled 1
    process_perf_data 1
    retain_status_information 1
    retain_nonstatus_information 1
    notification_period 24×7
    register 0
    }

    define host{
    use generic-host

    host_name Serveur1

    check_period 24X7

    max_check_attempts 23
    contact_groups serveur-admin
    check_command check-host-alive
    notification_interval 60
    notification_options d,u,r
    alias serveur1
    address 192.168.1.100
    }


    Servicegroups.cfg (/etc/nagios)

    J’ai créé ce fichier car il nous permet, tout comme hostgroups.cfg, de mieux structurer l’ensemble de nos services supervisés dans l’interface de Nagios. Vous pouvez alors regrouper les « Ping » tous ensemble pour voir un aperçu globale de la connectivité de votre réseau.


    Servicegroup Ping

    define servicegroup {
    servicegroup_name Ping
    alias Ping
    }

    Servicegroup Cpu Load

    define servicegroup {
    servicegroup_name Cpu_load
    alias Cpu_load
    }

    Servicegroup Memory Load

    define servicegroup {
    servicegroup_name Memory_load
    alias Memory_load
    }

    Servicegroup Disk Usage c:

    define servicegroup {
    servicegroup_name Disk_Usage_C:
    alias Disk_Usage_C:
    }


    Services.cfg (/etc/nagios)

    C’est dans ce fichier que vous allez inscrire vos commandes personnalisés permettant d’effectuer la surveillance réseau de vos hôtes et services. Vous déterminez ici les commandes telles que : charge du processeur, charge de la mémoire, espace disque, ping, etc. N’oubliez pas que ce fichier est lié au fichier commands.cfg ou sont inscrites les commandes génériques.


    Commande général

    define service{

    name generic-service

    active_checks_enabled 1

    passive_checks_enabled 1

    parallelize_check 1

    obsess_over_service 1

    check_freshness 0

    notifications_enabled 1

    event_handler_enabled 1

    flap_detection_enabled 1

    failure_prediction_enabled 1

    process_perf_data 1

    retain_status_information 1

    retain_nonstatus_information 1

    is_volatile 0

    register 0

    }

    Commande Ping au serveur

    define service {

    use generic-service

    service_description PING

    is_volatile 0

    check_period 24×7

    max_check_attempts 1000

    normal_check_interval 5

    retry_check_interval 1

    contact_groups serveur-admin

    notification_interval 240

    notification_period 24×7

    notification_options c,r

    servicegroups Ping

    host_name serveur1,serveur2,serveur3

    check_command check_ping!100.0,20%!500.0,60%

    }

    Commande charge CPU

    define service {

    use generic-service

    host_name serveur1,serveur2,serveur3

    service_description CPU Load

    servicegroups Cpu_load

    check_period 24×7

    max_check_attempts 1000

    normal_check_interval 5

    retry_check_interval 1

    contact_groups serveur-admin

    notification_interval 120

    notification_period 24×7

    notification_options c,r

    check_command check_nt!CPULOAD!-l 5,95,99

    }

    Commande charge mémoire

    define service {

    use generic-service

    host_name serveur1,serveur2,serveur3

    service_description Memory Load

    servicegroups Memory_load

    check_period 24×7

    max_check_attempts 1000

    normal_check_interval 5

    retry_check_interval 1

    contact_groups serveur-admin

    notification_interval 120

    notification_period 24×7

    notification_options c,r

    check_command check_nt!MEMUSE! -w 95 -c 99

    }

    Commande espace disque c:

    define service {

    use generic-service

    host_name serveur1,serveur2,serveur3

    service_description Hard Disk Usage C:

    servicegroups Disk_Usage_C:

    check_period 24×7

    max_check_attempts 1000

    normal_check_interval 5

    retry_check_interval 1

    contact_groups serveur-admin

    notification_interval 120

    notification_period 24×7

    notification_options c,r

    check_command check_nt!USEDDISKSPACE! -l c -w 95 -c 99

    }


    Timeperiods.cfg(/etc/nagios)

  • Ce fichier est implicitement lié aux fichiers contacts.cfg et contactgroups.cfg dans la mesure où il s’agit de période (temps) de notifications aux responsables lorsqu’un hôte ou service de nagios fait défaillance, vous pouvez alors déterminer si vous devez êtes alerté soit 24X7, durant les heures d’ouvertures de l’entreprise, etc.


    24X7 Period

    define timeperiod {
    timeperiod_name 24×7
    alias 24 Hours A Day, 7 day A Week
    sunday 00:00-24:00
    monday 00:00-24:00
    tuesday 00:00-24:00
    wednesday 00:00-24:00
    thursday 00:00-24:00
    friday 00:00-24:00
    saturday 00:00-24:00
    }

    nonworkhours Period

    define timeperiod {
    timeperiod_name nonworkhours
    alias Non business hours
    sunday 00:00-24:00
    monday 00:00-07:00,17:00-24:00
    tuesday 00:00-07:00,17:00-24:00
    wednesday 00:00-07:00,17:00-24:00
    thursday 00:00-07:00,17:00-24:00
    friday 00:00-07:00,15:00-24:00
    saturday 00:00-24:00
    }

    workhours Period

    define timeperiod {
    timeperiod_name workhours
    alias Business hours
    sunday 00:00-00:00
    monday 07:00-17:00
    tuesday 07:00-17:00
    wednesday 07:00-17:00
    thursday 07:00-17:00
    friday 07:00-15:00
    saturday 00:00-00:00
    }


    Dependencies.cfg (etc/nagios)

    Ce fichier contient les dépendances des hôtes et services. C’est à dire que si vous avez plusieurs succursales et que un des routeurs de la succursale, Montréal par exemple, tombe en panne, vous ne voulez pas recevoir de notifications comme quoi tous les hôtes de Montréal sont "down" alors que le problême se situe au niveau du routeur. Cela évite que l’administrateur réseau soit surchargé de notifications


    Routeur Laval

    define hostdependency {
    dependent_host_name routeur1
    host_name serveur1,serveur2
    inherits_parent 1
    execution_failure_criteria d,u
    notification_failure_criteria d,u
    }

    Routeur Quebec

    define hostdependency {
    dependent_host_name routeur2
    host_name serveur3,serveur4
    inherits_parent 1
    execution_failure_criteria d,u
    notification_failure_criteria d,u
    }

    Nsclient++ (Supervision de serveur Windows)

    Nsclient++ est un petit logiciel gratuit qui permet de récolter de l’information telles que (cpu,mémoire et espace disque) et agit comme agent de transmission entre Windows et Nagios. Voici la procédure d’installation qui est d’ailleurs fort simple…

    1. Técharger la version 32 ou 64 bits sur le site web :
    1. Sur le serveur Windows cible, exécutez « NSClient++-0.3.6-Win32.msi ».

    2. Procéder à l’installation, faire « Next » 4 fois, vous arrivez alors à la fenêtre ou vous devez précisez l’adresse IP de votre serveur Nagios et cochez également les trois premières cases comme démontré ci-dessous.

    1. Ensuite faire « Next » et « Install ». À la fin de l’installation, ne pas cochez la case « Start service » immédiatement et cliquez sur « Finish ».

    2. Allez ensuite dans les « Outils d’administration » du serveur Windows et sélectionner « Services ». Trouvez le service « NSClient++ » et effectuer un clic droit sur le service, alors choisir « Propriété » et par la suite se dirigez dans l’onglet « Connexion ». Finalement, cochez la case « Autoriser le service… » comme le démontre la figure ci-dessous.

    1. Ensuite faire « Ok » et ne pas oublier de démarrer le service « NSClient++ ».

    2. Si vous avez un pare-feu, vérifiez à ce qu’il ne bloque pas la communication entre le serveur Nagios et le serveur Windows.

    Configuration de Sendmail servant de relais SMTP pour l’envoi de courriel de notification dans Nagios.

    Puisque Nagios n’est pas un serveur de messagerie, il ne peut vous envoyer de courriel de notifications. Il faut alors configurer Sendmail qui agira à titre de relais SMTP afin de transmettre les courriels. Suivre la procédure à l’adresse ci-dessous :


    ### Nagios en images

    Pour voir un apercu de Nagios, Nagvis, Centreon et Nareto, voir le lien web ci-dessous:

    Recommandation (qui vous feront économiser du temps!!!)

  • Faire l’inventaire et un plan de votre réseau informatique.

    • Il est inutile de tout superviser votre réseau, faite un tri sélectif de ce qui sera à surveiller (ex Serveurs, Routeurs,etc.).Il est inutile de surcharger votre réseau de requête en faisant le monitoring d’imprimantes ou d’ordinateurs de bureau.
    • Bâtir des fichiers de configurations avec une belle nomenclature et des commentaires!
    • Bien penser avant d’écrire les fichiers de configurations(Dépendances, Contacts, Timeperiods,etc).

      ** Linuxomètre

      **

    Notes d’appréciation globale: 9/10

    Avantages:

  • Coût=0$

    • Vaste communauté de développeur (Plugins)
    • Beaucoup de documentation
    • Facilité d’installation (Avec "Fully Automated Nagios")
    • Performance et efficacité
    • Entièrement paramétrable
    • Support technique disponible (Payant$$$)
    • Interface Web agréable

    Inconvénients:
    * Complexité de la configuration

    • Base Linux (avancé) nécessaire
    • Ergonomie du logiciel
    • Entrées des données fastidieuse

    Conclusion

    Nagios s’avère un merveilleux outil pour l’administrateur réseau. La prise en main est un peu difficile avec la ligne de commande, mais une fois maîtrisé, vous prendrez plaisir et facilité à modifier les différents fichiers de configurations. Les possibilités sont quasi-infinies grâce aux nombreux "plugins" fournis par la vaste communauté de développeur de Nagios. Pourquoi payer des milliers de dollars pour des logiciels propriétaires qui ne vous laissent pas personnaliser le logiciel à votre goût quant vous pouvez avoir une solution performante,efficace et qui permet de modeler votre logiciel aux besoins de votre entreprise. Comme dirait le proverbe, posez la question, c’est y répondre!

    Références

    Le mois prochain

    IPCOP FIREWALL

    Contact

    Vincent Lépine
    Rédacteur de la chronique Linuxconomie 101 chez generation-linux.fr
    Québec, Canada

    Si vous avez des questions ou commentaires, n’hésitez pas à m’écrire un commentaire, je vais vous répondre le plus rapidement possible.