• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 11/06/2021

Découvrez les éléments constitutifs de Nagios

Vous avez précédemment installé Nagios et ses plugins standards. Vous avez aussi pu vérifier rapidement votre connexion à l’interface d’administration et constater que Nagios disposait bien de ses plugins. Dans ce chapitre, je vais approfondir avec vous le fonctionnement de Nagios, son fichier de configuration principal, ainsi que les différents fichiers sous-jacents. Ce chapitre vous aidera également à préparer votre environnement de travail et le répertoire qui contiendra votre configuration spécifique.

Il existe une page dédiée pour les « débutants » sur la documentation officielle de Nagios, que je trouve très utile.

Page dédiée aux débutants sur le site de Nagios
Page dédiée aux débutants sur le site de Nagios

Prenez votre temps ! Vous verrez que le fonctionnement de Nagios est finalement assez simple, mais assez long à maîtriser. Et Nagios réserve encore quelques pièges fort sympathiques, même aux administrateurs expérimentés. Lisez la documentation ! Elle est très fournie et très claire, c’est une force pour Nagios. N’hésitez pas à la consulter régulièrement, elle vous apportera beaucoup.

Vous n’êtes pas seuls ! L’autre grande force de Nagios réside dans sa communauté et, si vous n’avez pas trouvé la solution dans la documentation, vous la trouverez très probablement en posant simplement la question sur le forum.

Recensez les différents éléments constitutifs de Nagios

Pendant le processus d’installation, vous avez vu que le répertoire natif de Nagios était/usr/local/nagios/.

Exécutez la commande suivante afin de lister le contenu de ce répertoire :

ls -l /usr/local/nagios

Le résultat devrait ressembler à :

drwxrwsr-x 2 nagios nagios 4096 nov. 23 10:37 bin
drwxrwsr-x 3 nagios nagios 4096 nov. 23 11:02 etc
drwxr-sr-x 2 root staff 4096 nov. 23 12:42 include
drwxrwsr-x 2 nagios nagios 4096 nov. 23 12:42 libexec
drwxrwsr-x 2 nagios nagios 4096 nov. 23 10:37 sbin
drwxrwsr-x 15 nagios nagios 4096 nov. 23 12:42 share
drwxrwsr-x 5 nagios nagios 4096 nov. 24 09:19 var

Vous connaissez déjà deux des éléments de cette arborescence :

  • le répertoire bin, qui contient le programme principal de Nagios (ainsi qu’un autre programme permettant d’établir quelques statistiques) ;

  • le répertoire libexec, qui contient l’ensemble des plugins standards Nagios compilés sur ce serveur.

Je vous propose maintenant de passer en revue les autres répertoires.

Le répertoire « etc » pour la configuration de Nagios

Le répertoire etc contient l’ensemble de la configuration de Nagios. À la racine du répertoire, vous retrouvez le fichier htpasswd.users, que vous avez créé lors de l’installation de Nagios. Pour rappel, il permet de protéger l’accès à l’interface Web d’administration par un mot de passe htaccess.

Le fichier nagios.cfg est le fichier de configuration principal de Nagios. Au démarrage, c’est ce fichier que le programme Nagios va lire en premier. Toute la configuration se trouve dans ce fichier ou dans d’autres fichiers qui y sont référencés ! On peut citer, par exemple, resource.cfg, qui contient des paramètres spécifiques à votre contexte (nommés USER MACROS), ou encore cgi.cfg, dédié à la configuration de l'interface d'administration (notamment des droits utilisateur).

Ensuite, on trouve le répertoire objects. Il contient huit fichiers de configuration avec une extension .cfg. Ces fichiers contiennent des modèles de configuration fournis directement par Nagios, nommés TEMPLATES. Ils permettent de factoriser beaucoup de tâches, ce qui fait gagner du temps sur la configuration et la maintenance des sondes. Ainsi, dans le fichier printer.cfg, vous trouverez des modèles de configuration d’imprimantes, dans le fichier switch.cfg des modèles pour les équipements d’interconnexion, etc.

Les répertoires share et bin pour l'interface d'administration

Les répertoires share et sbin contiennent les éléments utiles à l’interface d’administration de Nagios.

  • Le répertoire sbin contient les fichiers cgi compilés. Ceux-ci traitent de certaines des fonctionnalités de l’interface d’administration. Par exemple, le fichier cmd.cgi traite les actions utilisateurs, le fichier notifications.cgi les notifications , summary.cgi l’affichage condensé des objets supervisés, etc.

  • Le répertoire share, lui, contient le code des pages de l’interface Web. Ceux qui aiment développer pourront modifier ces fichiers à la main pour adapter l’interface à leurs besoins. Mais il existe aussi des « skins » sur la plateforme https://exchange.nagios.org, grâce auxquels il est possible de modifier les fichiers CSS par défaut de l’interface.Vous remarquerez que l’interface de la version 4 de Nagios inclut Bootstrap et AngularJS !

Le répertoire var pour les variables maintenues par Nagios

Le répertoire var contient toutes les données variables maintenues par Nagios. Nagios écrit dans le fichier nagios.log(fichier de traces du processus) dès qu’il se passe quelque chose, que ce soit un redémarrage du service, un équipement qui n’est plus joignable ou un service qui passe en alerte. Les archives des fichiers de traces seront conservées dans le répertoire archives.

Les fichiers status.dat et retention.dat sont un peu particuliers :

  • le fichier status.dat contient l’ensemble des données de supervision de Nagios. Ces données peuvent concerner le processus Nagios en tant que tel (nombres d’équipements/services supervisés, date de démarrage du programme, directives générales, etc.), mais aussi tous les équipements et services supervisés (dernier statut détecté, temps de latence et durée d’exécution des sondes pour chaque équipement/service, etc.). C’est un fichier très important : il appartient à Nagios et vous ne devez pas le modifier à la main. Ce fichier est mis à jour selon une directive inscrite dans le fichier nagios.cfg ;

  • le fichier retention.dat est construit un peu sur le même principe que status.dat. Cependant, ce fichier est généralement mis à jour moins souvent, car il sert uniquement lorsque le service Nagios redémarre. Le programme principal vient alors lire les valeurs inscrites dans ce fichier afin de positionner le statut et les données des équipements/services à superviser par défaut. Cela évite que toutes vos sondes soient remises à zéro à chaque redémarrage du service ! Le comportement de Nagios vis-à-vis de ce fichier est également défini dans nagios.cfg.

Le fichier object.cache fonctionne sur le même principe que les deux fichiers précédents, mais contient simplement le cache de toute la configuration de Nagios. Vous ne devez pas intervenir directement dans ce fichier.

Le répertoire « rw » pour le pipe de Nagios

Le répertoire rw contient notamment le pipe de Nagios. Rappelez-vous : vous avez rencontré ce répertoire lors du processus d’installation.

Exécutez cette commande pour lister ce répertoire :

nagios@NagiosDebian:~$ ls -l /usr/local/nagios/var/rw/

Si votre service Nagios est actif, cette commande devrait renvoyer la sortie suivante :

total 0
prw-rw---- 1 nagios nagcmd 0 nov. 23 15:45 nagios.cmd
srw-rw---- 1 nagios nagcmd 0 nov. 23 15:45 nagios.qh

Le fichier nagios.cmd est le « pipe FIFO » (First In First Out) de Nagios. C’est un fichier très important. Son attribut Linux, le petit « p », vous indique que ce fichier est de type « named pipe ». Le principe est simple : c’est une connexion directe vers le processus Nagios, qui va lire de manière continue les instructions passées dans ce fichier et les exécuter si elles sont compréhensibles. Les instructions passées dans le fichier sont nommées « commandes externes », et c’est sur ce mécanisme que s’appuie l’interface d’administration de Nagios pour discuter avec son processus. Je vous en reparlerai plus en détail dans le chapitre 5.

Le fichier nagios.qh est l’une des principales nouveautés de la version 4 de Nagios. L’attribut Linux s indique que ce fichier est un « socket ». Il est notamment utilisé par les processus fils créés par Nagios pour discuter avec le processus principal, mais peut aussi être utilisé par un développement spécifique pour s’adresser à Nagios.

OK ! Vous avez fait le tour de l’arborescence Nagios, il est maintenant temps de se pencher sur le fichier le plus important de cette arborescence : nagios.cfg.

Maîtrisez les principales directives du fichier de configuration de Nagios

Découvrons ensemble quelques-unes des directives les plus importantes du fichier nagios.cfg. Le fichier contient une centaine de directives au total. Il serait évidemment trop long de toutes les détailler, alors attardons-nous sur les plus importantes.

log_file

Vous connaissez désormais la directive log_file, qui indique à Nagios le chemin vers son fichier de traces. Il est possible de changer le chemin par défaut, à condition que le comptenagios ait les droits d’écriture.

cfg_file

La directive cfg_file permet d’indiquer à Nagios de manière spécifique le chemin vers un fichier de configuration à prendre en compte au démarrage.

Exécutez la commande suivante :

nagios@NagiosDebian:~$ grep ^cfg_file /usr/local/nagios/etc/nagios.cfg 

Vous pourrez alors constater que le fichier nagios.cfg référence cinq fichiers de configuration contenus dans le répertoire /usr/local/nagios/etc/objects :

cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

cfg_dir

Cette directive a le même objectif que cfg_file. Cependant, plutôt que de référencer les fichiers de manière individuelle, cfg_dir référence tous les fichiers avec une extension .cfg contenus dans le chemin fournit en paramètre et ce, de manière récursive (en y incluant tous les répertoires et sous-répertoires).

Par défaut, il n’y pas de répertoire référencé, vous allez donc créer le vôtre. La question qui se pose est : où placer votre répertoire de configuration spécifique ? C’est une question importante, notamment si vous devez un jour effectuer une migration de serveur.

Je vous conseille fortement de laisser les répertoires de l’arborescence Nagios inchangés et de créer votre propre répertoire de travail à la racine du répertoire d’installation de Nagios. Lancez la commande suivante :

nagios@NagiosDebian:~$ mkdir /usr/local/nagios/opencr_conf

Il vous reste maintenant à référencer ce répertoire dans le fichier de configuration Nagios. Vous pouvez le faire en utilisant les commandes suivantes :

nagios@NagiosDebian:/usr/local$ echo "#CONFIG OPENCLASSROOMS" >> /usr/local/nagios/etc/nagios.cfg 
nagios@NagiosDebian:/usr/local$ echo "cfg_dir=/usr/local/nagios/opencr_conf" >> /usr/local/nagios/etc/nagios.cfg

Vous pouvez vérifier avec la commande suivante :

nagios@NagiosDebian:/usr/local$ tail /usr/local/nagios/etc/nagios.cfg 
# jobs_min The minimum amount of jobs to run at one time
[...]
#loadctl_options=jobs_max=100;backoff_limit=10;rampup_change=5
#CONFIG OPENCLASSROOMS
cfg_dir=/usr/local/nagios/opencr_conf

status_file et status_update

Ces deux directives indiquent à Nagios le chemin vers le fichier status.dat précédemment abordé dans ce cours, ainsi que l’intervalle de temps entre chaque mise à jour de ce fichier (en secondes).

nagios@NagiosDebian:/usr/local$ grep ^status_ /usr/local/nagios/etc/nagios.cfg 
status_file=/usr/local/nagios/var/status.dat
status_update_interval=10

Vous pouvez ici constater que le fichier status.dat est bien référencé et qu’il sera mise à jour toutes les 10 secondes. Je reviendrai sur ces 10 secondes dans le chapitre 5.

resource_file

Cette directive indique les fichiers contenant la définition des USER MACROS précédemment évoquées dans le cours. Par défaut, le fichier correspondant est/usr/local/nagios/etc/resource.cfg et vous permet de disposer de 256 variables. Celles-ci vont de $USER1$ à $USER256$ et permettent de stocker des valeurs « constantes » dans votre configuration Nagios.

D’ailleurs, Nagios définit votre toute première macro $USER1$ en tant que $USER1$=/usr/local/nagios/libexec.

command_file, check_external_commands, log_external_commands

Voici la signification des trois directives liées au pipe FIFO de Nagios :

  • la directive command_file indique le chemin vers le « pipe FIFO » de Nagios ;

  • la directive check_external_commands indique si Nagios doit écouter ce pipe ;

  • la directive log_external_commands indique si Nagios doit tracer les commandes exécutées via son pipe.

Pour connaître leur valeur, exécutez la commande suivante :

nagios@NagiosDebian:/usr/local$ grep command /usr/local/nagios/etc/nagios.cfg | grep -E ^[^#]

Ignorez la première ligne du résultat de cette commande, vous connaissez déjà sa signification :

cfg_file=/usr/local/nagios/etc/objects/commands.cfg
check_external_commands=1
command_file=/usr/local/nagios/var/rw/nagios.cmd
log_external_commands=1

Les trois valeurs par défaut de ces directives sont intéressantes et vont vous permettre de lancer des commandes externes.

Voilà quelques directives importantes. Vous pouvez tout à fait consulter la signification de toutes les directives existantes en consultant la documentation en ligne.

En résumé

BIEN ! Vous connaissez maintenant le fonctionnement de Nagios, les éléments qui constituent son arborescence et les principales directives de son fichier de configuration. Passons à la pratique avec un premier exemple : la supervision de Nagios par Nagios lui-même.

Exemple de certificat de réussite
Exemple de certificat de réussite