La supervision
Nagios
Introduction
Cette partie est consacrée à la solution de supervision Nagios. Elle a pour but de vous montrer quelle est la configuration minimum à effecuter afin de faire tourner Nagios ainsi que les différentes interfaces de navigation du l'outil.
Les tests qui suivent ont été réalisés sur une machine avec Ubuntu 9.04 et Nagios 3.
Présentation

Nagios est une solution open source sous licence GNU GPL. Elle permet de surveiller les machines et les services spécifiés et génère des alarmes en cas de mauvais fonctionnement.
Pour pouvoir faire tourner Nagios, il faut obligatoirement une machine sous Linux (ou Unix) et un serveur apache pour pouvoir accéder aux pages.
Parmi les fonctionnalités que proposent Nagios, on retrouve :
- la surveillance des services (SMTP, POP3, HTTP, FTP, ...)
- la surveillance des ressources d'une machine (la charge du processeur, l'espace disque, ...)
- la possibilité de développer ses propres plugins
- la hiérarchisation des équipements composant le réseau
- la notification par email
- la journalisation des évènements
Nagios peut fonctionner avec 2 modes : avec utilisation d'une base de données ou en mode text.
Le premier comme son nom l'indique utilise une base de données pour le stockage des différentes informations que récupèrera Nagios tandis que le deuxième mode de fonctionnement utilisera des fichiers texte pour sauvegarder les données.
Configuration
Pour la suite, j'ai volontairement mis de côté l'installation afin de pouvoir se concentrer sur la configuration. De plus, l'installation a été réalisé sans l'utlisation d'une base de données.
Pour installer Nagios ou pour avoir plus de renseignements, veuillez vous référer à la documentation officielle.
Pour commencer nous allons définir le contact à notifier en cas d'alarme. Pour cela, il faut aller dans le fichier contacts.cfg
define contact{ contact_name ktran alias Khai-Wen Tran email ktran@etudiant.univ-mlv.fr service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,u,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email }
contact_name | Nom du contact (login par exemple) |
alias | Nom complet du contact |
Adresse e-mail du contact | |
pager | Numéro du contact pour les SMS |
service_notification_period | Correspond à la période de temps durant laquelle Nagios peut envoyer des notifications sur des problèmes liés aux services. Par défaut, la périod est 24x7. Toutes les périodes sont définies dans le fichier /etc/nagios3/timeperiods.cfg. |
service_notification_options |
Définit à partir de quel(s) état(s) Nagios doit envoyer des notifications. Il existe 6 types :
|
service_notification_commands | Nom de la commande à utiliser pour l'envoyer de notifications sur les services. Les commandes se trouvent dans le fichier commands.cfg et on peut y rajouter des commandes personnalisées. |
host_notification_period | Correspond à la période de temps durant laquelle Nagios peut envoyer des notifications sur des problèmes liés à la machine. Par défaut, la périod est 24x7. Toutes les périodes sont définies dans le fichier /etc/nagios3/timeperiods.cfg. |
host_notification_options |
Définit à partir de quel(s) état(s) Nagios doit envoyer des notifications. Il existe 6 types :
|
host_notifications_commands | Nom de la commande à utiliser pour l'envoyer de notifications sur la machine. Les commandes se trouvent dans le fichier commands.cfg et on peut y rajouter des commandes personnalisées. |
define command{ command_name notify-service-by-email command_line /usr/bin/mail -s "Nagios Service Notification" $CONTACTEMAIL$ "[$DATE$] Le service $SERVICEDESC$ est $SERVICESTATE$" }
Voici un exemple de commande que j'ai utilisé pour mon envoyer de notification des services par e-mail. Comme on peut le voir le nom de la commande utilisée dans la définition du contact est vient en fait du nom défini au dessus. J'utilise mail avec les options de Nagios pour le contact et le service qui a provoqué l'alarme.
Pour pouvoir utiliser correctement les notifications, il faut s'assurer d'avoir installer au préalable les applications tierces permettant d'envoyer soit des e-mail, soit des sms, puis de modifier le fichier commands.cfg et de mettre les bonnes commandes.
Une fois nos contacts créés, il faut à présent les affecter à des groupes. La définition des groupes se trouve dans le fichier contactgroups.cfg
define contactgroup{ contactgroup_name sys-admin alias System Administrator members ktran }
contactgroup_name | Nom du groupe de contacts |
alias | Nom complet du groupe de contacts |
members | Liste des contacts appartenant à ce groupe. Chaque contact est séparé par une virgule ",". |
Nous avons fini de configurer la première partie de Nagios. Il nous reste à présent la configurer des différents équipements appartenant à notre réseau ainsi qur les services à surveiller pour chaque. Commençons tout d'abord par éditer la liste des équipements dans le fichier hosts.cfg :
define host{ host_name data-server alias Data Storage Server address 192.168.1.101 max_check_attempts 5 check_period 24x7 contact_groups sys_admin notification_interval 30 notification_period 24x7 notification_options d,u,r }
host_name | Nom de la machine à surveiller |
alias | Nom complet de la machine à surveiller |
address | L'adresse IP de la machine |
max_check_attempts | Nombre de tentatives que Nagios va effectuer sur la machine lorsqu'elle retourne un état autre que OK. |
check_period | Définit la période de temps durant laquelle Nagios peut effectuer ses vérifications |
contact_groups | Définit le(s) groupe(s) de contacts à prévenir en cas d'alarme. |
notification_interval | Correponds à l'interval de temps à attendre entre 2 notifications. |
notification_period | Définit la période de temps durant laquelle Nagios peut envoyer des notifications |
notification_options |
Définit les états à prendre en compte pour les notifications
|
On peut également définir des groupes de machines. Cela permet d'avoir une meilleure visibilité surtout au niveau de l'interface web de Nagios
define hostgroup{ hostgroup_name servers alias Servers members data-server }
hostgroup_name | Nom du groupe de machines |
alias | Nom complet du groupe de machines |
members | Liste des machines appartenant à ce groupe. Chaque machine est séparée par une virgule ",". |
Il ne reste plus qu'à définir les services que l'on désire surveiller.
define service{ host_name data-server service_description check-disk-sda1 check_command check-disk!/dev/sda1 max_check_attempts 5 normal_check_interval 5 retry_check_interval 3 check_period 24x7 notification_interval 30 notification_period 24x7 notification_options w,c,r contact_groups sys-admin }
host_name | Nom de la machine sur laquelle tourne le service à surveiller |
service_description | Description sur service |
check_command | Nom de la commande à utiliser pour effectuer l'opération. Des commandes par défaut existent déjà dans le fichier checkcommands.cfg. |
max_check_attempts | Nombre maximum de tentatives à effectuer lorsque la commande reçoit une réponse autre que OK. |
normal_check_interval | Interval de temps entre 2 exécutions de la commande de vérification lors d'un usage normal ou lorsque le nombre maximum de tentatives est atteint. |
retry_check_interval | Interval de temps entre 2 exécutions de la commande de vérification lorsqu'un état autre que OK est détecté. |
check_period | Péiode de temps durant laquelle Nagios peut effectuer ses vérifications. |
notification_interval | Correponds à l'interval de temps à attendre entre 2 notifications. |
notification_period | Correspond à la période de temps durant laquelle Nagios peut envoyer des notifications sur des problèmes liés aux services. |
notification_options |
Définit à partir de quel(s) état(s) Nagios doit envoyer des notifications.
|
contact_groups | Définit le(s) groupe(s) de contacts à prévenir en cas d'alarme. |
Tous les attributs décrits pour les fichiers de configurations sont celles qui sont strictement obligatoires pour le bon fonctionnement de Nagios. Il existe d'autres atttributs facultatifs que vous pourrez trouver dans la documentation officielle.
L'interface graphique
Nagios possède une interface graphique sobre mais permettant d'avoir une visualisation rapide du système. Grâce à cet interface, on peut visualiser la liste des machines que l'on surveille avec une vue au format liste ou topologique.
Les captures d'écrans ont été repris du site officiel car elles contiennent bien plus de machines et de services rendant ainsi le visuel plus parlant.







Conclusion
Et voilà ! Désormais, vous savez quel est le minimum à connaître pour configurer les fichiers de nagios afin de mettre en place votre solution de supervision. Bien entendu, ceci n'est qu'une petite partie mais j'espère qu'elle vous aura été utile :).
Il ne vous reste plus qu'à aller tester et approfondir de votre côté !