Installer et configurer Nagios sur Linux

Publié le 23 octobre 2014 par Rhw @RevueHW

Nagios, l’un des plus puissants systèmes de surveillance de réseaux, est utilisé abondamment dans l’industrie. Il peut surveiller activement n’importe quel réseau et générer des alertes audio ou par email dès qu’il détecte un problème. Les types de vérifications de même que les alarmes des alertes peuvent être configurés.

Autre capacité incroyable de Nagios : il peut surveiller à la fois les hôtes et les services ; par exemple : il peut surveiller les adresses IP ainsi que les ports TCP/UDP. Pour comprendre un peu tout cela, supposons qu’il y ait un serveur web que nous voulions surveiller. Nagios peut vérifier si le service est en ligne en exécutant un Ping sur le nom/IP du serveur ou bien créer des alertes au cas où que le Round Trip Time (RTT) jusqu’au serveur augmente. De plus, Nagios peut également vérifier si le port TCP 80 (serveur web) est accessible, par exemple si le serveur est en ligne mais que Apache/IIS ne répond pas.

Il existe également des outils de surveillance tiers basés sur Nagios, tels que Centreon, FAN, op5 Monitor, qui complètent l’engin autonome qu’est Nagios en termes d’interface, d’automation, et de support technique.

Ce tutoriel explique comment installer et configurer Nagios sur Linux.

Installer Nagios sur Debian ou Ubuntu

En ce qui concerne le système Debian, l’installation en elle-même est un processus très simple grâce à apt-get.

root@mrtg:~# apt-get install nagios3

Le réglage du serveur mail peut être fait lors de l’installation de Nagios. Il peut également être configuré plus tard en cas de besoin.

Note : Une configuration SMTP valide est nécessaire pour que Nagios envoie des emails de notifications.

 

Comme on peut le constater, Nagios supporte de multiples options d’envoi d’emails. Les options les plus communes sont Internet Site où le serveur envoie des emails directement au destinataire. Autre option largement utilisée, est l’utilisation d’un smarthost ou d’un serveur de relai, dans lequel le serveur envoie un email à un serveur de mails intermédiaire qui, en retour, envoie ce même email au destinataire.

Pour la suite, le nom de domaine du serveur doit être inclus dans la prochaine étape.

 

Finalement, le mot de passe pour l’administrateur de Nagios (‘nagiosadmin’) est mis en place. Cette information peut elle aussi, être changée plus tard.

 

Installer Nagios sur CentOS ou RHEL

On utilise yum pour l’installation. Après avoir mis en place le dépôt repoforge, actionnez yum de la manière suivante.

[root@mrtg ~]# yum install nagios nagios-plugins

Les critères de surveillance

Dans le présent tutoriel, nous souhaitons surveiller les éléments suivants :

  • Tout le serveur Linux sera contrôlé toutes les 3 minutes.
  • Tous les routeurs Cisco seront contrôlés toutes les 3 minutes.
  • Toutes les alertes mails doivent se rendre sur sentinel@example.tst.
  • Nagios vérifiera 3 fois avant d’envoyer quelque alerte que ce soit pour être sûr que le problème est réel.
  • Si le RTT vers quelque appareil que ce soit excède 100ms et/ou que la perte de paquets excède 20%, un mail d’alerte sera généré.  

Le reste du tutoriel vous guidera pour configurer Nagios sur Linux.

Configuration de Nagios sur Ubuntu

Il est important de savoir où sont localisés les fichiers relatifs à la configuration de Nagios. Le tableau suivant montre la localisation desdits fichiers de configuration pour les systèmes basés sur Debian.  

/etc/nagios-plugins

Personnalisation des scripts utilisés pour la surveillance

/etc/nagios3

Configuration des fichiers  pour ajouter des hébergeurs, services, définir les vérifications et les timers

/usr/lib/nagios/plugins

Les fichiers exécutables utilisés pour la surveillance

Les étapes suivantes sont inter – reliées. Nous y donnerons la définition des hôtes, groupes d’hôtes ainsi que celle des services supplémentaires concernant les groupes d’hôtes.

Modèle d’ajout d’hôte

Les modèles expliquant que faire avec un hôte type sont définis. Nous utilisons les fichiers fournis avec l’installation comme échantillons.

Premièrement, définissez un modèle d’hôte pour les appareils Linux.

root@mrtg:~# cd /etc/nagios3/conf.d
root@mrtg:/etc/nagios3/conf.d/# cp generic-host_nagios2.cfg linux-server.cfg

Editez le fichier linux-server.cfg de la manière suivante. Les parties en gras sont modifiées.

root@mrtg:/etc/nagios3/conf.d/# vim linux-server.cfg
define host{name    linux-server  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   1check_command      example-host-check  ; the script to be used while checkingcheck_interval   3    ; the interval between consecutive checksmax_check_attempts   3      ; number of rechecking before generating email alertsnotification_interval   0notification_period   24x7  notification_options   d,u,rcontact_groups   admins   ; the group where emails will be sentregister   0   } 

Ensuite, définissez un modèle d’hôte pour les appareils Cisco.

root@mrtg:/etc/nagios3/conf.d/# cp linux-server.cfg cisco-device.cfg

Modifiez le fichier cisco-device.cfg de la manière suivante. Les parties en gras sont modifiées.

root@mrtg:/etc/nagios3/conf.d/# vim cisco-device.cfg
# The highlighted parts are modifieddefine host{name   cisco-device   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 check_command      example-host-check  ; the script to be used while checkingcheck_interval      3      ; the interval between consecutive checksmax_check_attempts      3 ; number of rechecking before generating email alertsnotification_interval      0notification_period      24x7   notification_options   d,u,rcontact_groups   admins   ; the group where emails will be sentregister   0     }

Ajout d’hôte

A présent que le modèle d’hôte est défini, il faut ajouter l’hôte actuel à surveiller. Là encore, les fichiers fournis par défaut sont utilisés comme échantillon.

root@mrtg:/etc/nagios3/conf.d/# cp localhost_nagios2.cfg example.cfg
root@mrtg:/etc/nagios3/conf.d/# vim example.cfg
# Host 1define host{use   linux-server   ; Name of host template to usehost_name   our-server   ; The hostname to be used by nagiosalias     our-serveraddress   172.17.1.23   ; The IP address of the host   } # Host 2define host{use   cisco-device      ; Name of host template to usehost_name      our-router   ; The hostname to be used by nagiosalias     our-routeraddress   172.17.1.1    ; The IP address of the host   }

Définition de groupe d’hôte

Pour une gestion plus aisée lorsqu’il y a plusieurs hôtes, il est conseillé de faire en sorte que les hôtes de type similaire soient groupés ensemble.

root@mrtg:/etc/nagios3/conf.d/# vim hostgroups_nagios2.cfg
definehostgroup {hostgroup_name   linux-server     ; the name of the host groupalias   Linux Serversmembers   our-server   ; comma separated list of members     } definehostgroup {hostgroup_name   cisco-device   ; the name of the host groupalias   Cisco Devicesmembers   our-server   ; comma separated list of members   }

Définition du service

 Premièrement, la commande example-host-check est définie avec pour seuil d’alerte de 100ms de latence et de 20% de perte de paquets. La valeur critique de latence est de 5000ms et celle de perte de paquet est de 100%. Une requête ping IPv4 est transmise.

root@mrtg:~# vim /etc/nagios-plugins/config/ping.cfg
define command{   command_name   example-host-check   command_line   /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 100,20% -c 5000,100% -p 1 -4   }

La commande est ensuite associée aux groupes d’hôtes.

root@mrtg:/etc/nagios3/conf.d/# vim services_nagios2.cfg
define service {hostgroup_name      linux-serverservice_description   Linux Serverscheck_command   example-host-checkuse     generic-servicenotification_interval 0 ; set > 0 if you want to be renotified} define service {hostgroup_name      cisco-deviceservice_description      Cisco Devicescheck_command   example-host-checkuse     generic-servicenotification_interval 0 ; set > 0 if you want to be renotified}

Définition de contact

L’adresse requise pour envoyer des ajouts d’emails vers Nagios.

root@mrtg:/etc/nagios3/conf.d/# vim contacts_nagios2.cfg
define contact{   contact_name   root   alias   Root   service_notification_period   24x7   host_notification_period   24x7   service_notification_options   w,u,c,r   host_notification_options   d,r   service_notification_commands   notify-service-by-email   host_notification_commands   notify-host-by-email    email     root@localhost, sentinel@example.tst   }

Enfin, une opération d’essai est mise en place pour vérifier si il existe des erreurs de configuration. S’il n’y a pas d’erreurs, Nagios peut être (re)lancé sans problème.

root@mrtg:~#nagios –v /etc/nagios3/nagios.cfg
root@mrtg:~# service nagios3 restart

Configuration de Nagios sur CentOS/RHEL

Ci-dessous les localisations des fichiers de configuration de Nagios pour les systèmes basés sur Redhat.

/etc/nagios/objects

Configuration des fichiers pour ajouter des hôtes, services, définir de vérifications et de timers

/usr/lib/nagios/plugins

Les fichiers exécutables utilisés pour la surveillance

Ajout de modèle d’hôte

Un modèle est créé pour définir ce qui doit être fait pour un type spécifique d’hôte. Les fichiers fournis avec l’installation sont modifiés.

root@mrtg objects]# cd /etc/nagios/objects/
[root@mrtg objects]# vim templates.cfg
define host{   name   linux-server     use   generic-host     check_period   24x7     check_interval   3   retry_interval   1   max_check_attempts   3   check_command   example-host-check   notification_period      24x7   notification_interval   0   notification_options      d,u,r   contact_groups   admins   register   0   } define host{   name   cisco-router     use   generic-host     check_period   24x7     check_interval   3   retry_interval   1   max_check_attempts   3   check_command   example-host-check   notification_period      24x7   notification_interval   0   notification_options      d,u,r   contact_groups   admins   register   0   }

Ajout d’hôtes et de groupes d’hôtes

Le fichier de configuration fourni par défaut est utilisé comme échantillon. Les hôtes et groupes d’hôtes sont ajoutés dans le même fichier.

[root@mrtg objects]# cp localhost.cfg example.cfg
[root@mrtg objects]# vim example.cfg
#Adding Linux serverdefine host{use   linux-serverhost_name   our-serveralias   our-serveraddress   172.17.1.23   } #Adding Cisco Routerdefine host{use   cisco-routerhost_name   our-routeralias   our-routeraddress   172.17.1.1   } # HOST GROUP DEFINITIONdefine hostgroup{hostgroup_name  linux-serversalias   Linux Serversmembers   our-server     } define hostgroup{hostgroup_name  cisco-routeralias   cisco-routermembers   our-router   }

Définition du service

Un service appelé example-host-check est défini avec comme seuil d’alerte 100ms de latence et 20% de perte de paquets. La valeur critique de latence est de 5000ms et de 100% pour la perte de paquets. Une seule requête ping IPv4 sera transmise.

[root@mrtg objects]# vim commands.cfg
define command{   command_name   example-host-check   command_line   $USER1$/check_ping -H $HOSTADDRESS$ -w 100.0,20% -c 5000.0,100% -p 1 -4   }

Définition de contact

L’adresse email où seront envoyées les alertes est ajoutée dans Nagios.

[root@objects objects]# vim contacts.cfg
define contact{contact_name   nagiosadmin   use   generic-contactalias   Nagios Adminemail   nagios@localhost, sentinel@example.tst   }

Enfin, nous sommes prêts à lancer le service Nagios. Une opération d’essai est recommandée pour déterminer s’il y a des erreurs de configuration.

[root@mrtg ~]# nagios –v /etc/nagios/nagios.cfg
[root@mrtg ~]# service nagios restart
[root@mrtg ~]# chkconfig nagios on

Accéder à Nagios après la configuration

Vous êtes à présent prêt à utiliser Nagios. Vous pouvez accéder à ce dernier en ouvrant l’URL http://IP/nagios3 pour Ubuntu/Debian ou http://IP/nagios pour CentOS/RHEL; par exemple : http://172.17.1.23/nagios3. L’utilisateur « nagiosadmin » doit être identifié pour accéder à la page.

 

Lorsque Nagios ne fonctionne pas comme il le devrait, la première chose à faire et d’initier une opération d’essai.

Sur Debian ou Ubuntu :

# nagios3 -v /etc/nagios3/nagios.cfg

Sur CentOS ou RHEL :

# nagios -v /etc/nagios/nagios.cfg

Le journal (ou historique des évènements) peut également faire état d’éléments importants. Il est localisé à /var/log/nagios/nagios.log.

En espérant que tout cela vous soit utile.

Article originale de: Sarmed Rahman