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

Bonjour à tous,

De nos jours, les entreprises sont de plus en plus dépendantes de leur système d'information d'où l'importance de la disponibilité et de la performance des infrastructures informatiques en place afin de ne pas nuire à la productivité de ces entreprises. Les administrateurs réseaux doivent alors être vigilants et être le plus rapidement informé lors d'une panne. Cet chronique a pour mission de vous guider lors de l'installation et la configuration d'un serveur de "monitoring" sous Nagios qui vous permettra alors d'avoir une vue d'ensemble de l'état de votre réseau informatique.


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 "Fully automated Nagios" 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 :

Documentation d'installation

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     24x7
        host_notification_period        24x7
        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                           nagios-admin@localhost
        }

define contact{
        contact_name                    Vincent Lepine
        alias                           Vincent Lepine
        service_notification_period     24x7
        host_notification_period        24x7
        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                           vlepine@domain.com
        }

------------------------------------------------------------------------------------------------------

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 24x7
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 24x7

max_check_attempts 1000

normal_check_interval 5

retry_check_interval 1

contact_groups serveur-admin

notification_interval 240

notification_period 24x7

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 24x7

max_check_attempts 1000

normal_check_interval 5

retry_check_interval 1

contact_groups serveur-admin

notification_interval 120

notification_period 24x7

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 24x7

max_check_attempts 1000

normal_check_interval 5

retry_check_interval 1

contact_groups serveur-admin

notification_interval 120

notification_period 24x7

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 24x7

max_check_attempts 1000

normal_check_interval 5

retry_check_interval 1

contact_groups serveur-admin

notification_interval 120

notification_period 24x7

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 24x7
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 : http://nsclient.org/nscp/

      2. Sur le serveur Windows cible, exécutez «  NSClient++-0.3.6-Win32.msi ».

      3. 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.




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

      5.  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.



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

      7. 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 :

Configuration de Sendmail (relais SMTP)

Nagios en images

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

Nagios en images

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

-Site officiel de Nagios (Anglais)
-Site officiel de Fully Automated Nagios (Anglais)
-Plugins,Add-ons et extensions de Nagios (Anglais)

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.

                                                       

Vus : 609
Publié par Génération Linux : 126