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.
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 fichierscgi
compilés. Ceux-ci traitent de certaines des fonctionnalités de l’interface d’administration. Par exemple, le fichiercmd.cgi
traite les actions utilisateurs, le fichiernotifications.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 fichiernagios.cfg
;le fichier
retention.dat
est construit un peu sur le même principe questatus.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 dansnagios.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.