TP4 : Nagios

Transcription

TP4 : Nagios
TP4 : Nagios
15 novembre 2016
L’objectif de ce TP est de se familiariser avec l’outil de supervision Nagios. Nagios est un
logiciel libre qui comprend deux composants : un service chargé d’interroger périodiquement les
composants à superviser (PCs, commutateurs, routeurs, . . .) et une interface web permettant de
visualiser graphiquement les résultats collectés. Le TP est à réaliser en binôme sur deux machines
restaurées avec l’image Bosc-Debian8 :
— nagios — C’est la machine sur laquelle nous installerons l’outil de supervision nagios.
— agent — C’est la machine qui sera supervisée par la machine nagios.
Ce TP est prévu pour 2 séances de 3 heures. Les exercices 1 à 5 sont prévus pour la première
séance, les suivants pour la deuxième séance. Au début de la deuxième séance, il faudra réaliser
l’exercice 1 pour installer les paquets nécessaires et l’exercice 2 (points 1 et 2 seulement) pour
configurer nagios afin de superviser la machine agent.
1
Installation
4
P
T
8
0
1
3
M
1. Sur la machine nagios, installer les paquets suivants :
— nagios3 — Le script d’installation demande de choisir un mot de passe. Ce mot de passe
sera nécessaire pour accéder à l’interface web de nagios.
— nagios-nrpe-plugin
— postfix (serveur d’envoi de mails) — Lors de l’installation, séléctionner Site Internet
pour le mode d’envoi des mails et laisser le nom de courrier par défaut.
2. Sur la machine agent, installer les paquets suivants :
— proftpd (serveur FTP) — Lors de l’installation, sélectionner Indépendamment lorsque
le script demande comment proftpd doit être lancé.
— nagios-nrpe-server
2
Interface web de Nagios
Par défaut, le service web de la machine nagios est accessible par toutes les machines.
1. Démarrer le service nagios.
2. Ouvrir un navigateur web à l’URL suivante : http://<ip-de-nagios>/nagios3. Le login
pour accéder à l’interface web de nagios est nagiosadmin. Prenez le temps de vous familiariser
avec l’interface web.
1
3. Quelles sont les machines actuellement supervisées par le service nagios ? Quels sont les
informations collectées et affichées sur ces machines ?
3
Supervision de la machine agent
Les fichiers de configuration du service nagios se trouvent dans le répertoire /etc/nagios3.
Le fichier principal, lu au démarrage du service, est /etc/nagios3/nagios.cfg. Pour qu’un autre
fichier de configuration soit pris en compte il faut, dans ce fichier, ajouter une ligne de la forme
ci-dessous :
cfg file=/etc/nagios3/<fichier-a-ajouter>
Nous allons maintenant configurer la machine nagios pour qu’elle supervise le service FTP de
la machine agent, c’est-à-dire, pour qu’elle teste périodiquement si ce service est bien actif.
Les éléments supervisés par nagios sont généralement dans le répertoire /etc/nagios3/objects.
1. Créer un fichier /etc/nagios3/objects/agent.cfg contenant les lignes suivantes (créer le
répertoire objects s’il n’existe pas) :
define host {
use
host name
address
}
8
0
1
generic -host
<nom - de - agent >
< adresse - ip - de - agent >
3
M
C’est dans ce fichier que nous déclarons une nouvelle machine à superviser (avec la déclaration
host) et que nous déclarerons par la suite les opérations de supervision que nous souhaitons
effectuer sur cette machine.
La ligne use indique que la machine hérite de certaines caractéristiques liées au type de
machines generic-host. Le nom choisi sera celui qui apparaı̂tra dans l’interface web.
2. Ajouter à la fin du fichier de configuration principal une référence vers ce nouveau fichier,
comme indiqué en introduction de cet exercice.
3. Redémarrer le service nagios. Qu’observe-t-on dans l’interface web de supervision ?
4. Pour l’instant la machine agent a été déclarée, mais le service nagios n’effectue aucune
opération de supervision sur celle-ci.
Dans le fichier de configuration agent.cfg, ajouter les lignes suivantes afin de tester
périodiquement la disponibilité du service FTP :
4
P
T
define service {
use
host name
service description
check command
check interval
}
generic -service
<nom - de - agent >
< description - du - service - supervisé >
check_ftp
1m
La ligne check command indique la commande utilisée pour vérifier la disponibilité du serveur
FTP. La commande check_ftp est présente, de base, après installation de nagios. Nous verrons
dans les exercices suivants comment définir de nouvelles commandes.
La ligne check interval indique à quelle fréquence nagios fera le test (1 minute dans ce cas).
5. Redémarrer le service nagios. Qu’observe-t-on dans l’interface web de supervision ?
6. Observer les changements sur l’interface web lorsque l’on arrête ou démarre le service proftpd
sur la machine agent.
2
4
Supervision du routeur de la salle de TP
En suivant les instructions de l’exercice précédent, configurer la machine nagios afin qu’elle
teste toutes les minutes si le routeur de la salle de TP est actif (répond bien aux pings). Chercher
sur Internet la commande nagios à utiliser. Expliquer dans le compte-rendu comment passer des
arguments à cette commande dans le fichier de configuration.
5
Mise en place de notifications
On souhaite maintenant que l’administrateur (vous) soit prévenu par e-mail en cas de
changement d’état du service FTP sur la machine agent.
1. Créer le fichier /etc/nagios3/objects/contacts.cfg qui contiendra les lignes suivantes
permettant de déclarer un contact et un groupe de contacts contenant ce seul membre.
define contact {
contact name
<nom-du-contact>
email
<adresse-mail-du-contact>
service notifications enabled <a-compléter>
service notification commands <a-compléter>
service notification period
<a-compléter>
service notification options <a-compléter>
host notification commands
<a-compléter>
}
define contactgroup {
contactgroup name <nom-du-groupe>
alias
<alias-du-groupe>
members
<nom-du-contact>
}
3
M
8
0
1
Rechercher sur Internet la signification des paramètres pour lesquels la valeur est à compléter.
Choisir des valeurs afin que l’administrateur soit prévenu à tout moment si un service passe
de l’état actif à inactif ou inversement.
4
P
T
2. Ajouter dans le fichier de configuration principal de nagios un lien vers ce nouveau fichier.
3. Ajouter dans la déclaration du service FTP (à l’intérieur du bloc
lignes suivantes :
notifications enabled
first notification delay
notification interval
contact groups
define service { ... })
les
1
0
0
<nom - du - contact >
La ligne notifications enabled active l’envoi de mails lors d’un changement d’état du service.
La ligne first notification delay indique le temps d’attente (en secondes) avant l’envoi du mail
lorsqu’un changement d’état est observé.
La ligne notification interval indique le nombre de mails de rappels envoyés après le premier
mail.
4. Démarrer le service postfix.
5. Redémarrer le service nagios.
6. Arrêter le service proftpd sur la machine agent pour tester si le mail de notification est envoyé.
7. Retester l’envoi du mail après redémarrage du service.
3
6
Développement d’un premier plugin
Les tâches de supervision exécutées par le service nagios sont effectuées grâce à des fichiers
exécutables appelés plugins et se trouvant dans le répertoire /usr/lib/nagios/plugins. À
l’installation de nagios, ce répertoire contient de nombreux plugins permettant de réaliser des tests
simples. La commande check ftp utilisée précédemment pour vérifier la disponibilité du service
FTP en est un exemple.
L’objectif de cet exercice est d’écrire un plugin permettant de tester si un fichier est bien
disponible sur un site web. On utilisera ce plugin pour vérifier que le fichier index.html est présent
sur le serveur web de la machine agent.
Un script de plugin doit toujours renvoyer une des trois valeurs suivantes :
— 0 = OK
— 1 = avertissement
— 2 = négatif
1. Écrire un plugin check fichier http prenant en argument l’URL d’un fichier à télécharger.
Le script devra retourner un code :
— 0 si le fichier a bien pu être téléchargé ;
— 1 si le fichier n’est pas présent sur le serveur (⇔ erreur HTTP 404) ;
— et 2 dans tous les autres cas (hôte inaccessible, serveur web inactif, . . .)
Le script devra également afficher un message indiquant le résultat du test et, en cas d’erreur,
une description du problème.
Indications :
— Utiliser l’option -O /dev/null de wget pour ne pas sauvegarder le fichier téléchargé (ce
qui poserait problème car le service nagios n’a pas de droit en écriture).
— La commande wget renvoie un code de retour indiquant, en cas d’erreur, la nature du
problème (voir le manuel).
2. Le fichier /etc/nagios3/commands.cfg contient les définitions des commandes de supervision
pouvant être lancées par le service nagios.
Ajouter à la fin de ce fichier la définition de la commande check fichier http :
4
P
T
8
0
1
3
M
define command {
command name <nom - de - la - commande >
command line / usr / lib / nagios / plugins / c h e c k _ f i c h i e r _ h t t p http :// $ HOSTADDRESS$ / $ARG1$
}
La ligne command line définit la commande qui sera exécutée par nagios. $ARG1$ sera remplacé
par la valeur du premier argument lorsque nous définirons (point suivant) le service utilisant
cette commande. $HOSTADDRESS$ sera remplacé par son adresse IP.
3. Modifier le fichier /etc/nagios3/objects/agent.cfg pour indiquer que nous allons
maintenant utiliser la commande définie dans le point précédent sur la machine agent pour
récupérer le fichier à l’URL http://<ip-de-agent>/index.html>. Il faut pour cela définir
un nouveau service comme nous l’avons fait dans l’exercice 3.
4. Redémarrer le service nagios puis vérifier l’état du nouveau service supervisé dans l’interface
web.
5. Observer les changements dans l’interface après avoir supprimé le fichier HTML demandé
(normalement dans le répertoire /var/www/html) puis après avoir arrêté le service HTTP.
4
7
Développement d’un deuxième plugin
En suivant les étapes de l’exercice précédent, écrire un plugin check jitter pour tester la jigue
de la machine agent. Le script devra envoyer 10 demandes d’écho avec ping pour mesurer cette
jigue (appelée mdev par ping). Le plugin à programmer prendra trois arguments : l’adresse IP de la
machine à contacter, et deux seuils de jigue (en millisecondes) : un seuil d’avertissement et un seuil
critique. Le plugin retournera un des trois états suivants :
— 0 si la jigue est inférieure aux deux seuils passés en argument ;
— 1 si la jigue est supérieure au seuil d’avertissement mais inférieure au seuil critique ;
— 2 dans tous les autres cas.
Pour simplifier, on considérera que les seuils sont des valeurs entières et on arrondira la jigue fournie
par ping à l’entier inférieur.
Utiliser la commande tc (voir TP 1) pour modifier la jigue et observer les changements sur
l’interface web. Par exemple, pour introduire une jigue de 20ms :
8
0
1
$ tc qdisc add dev eth0 root netem delay 0 ms 20 ms
8
Exécution de commandes à distance
3
M
NRPE (Nagios Remote Plugin Executor) est une extension permettant au service nagios
d’exécuter des commandes à distance sur les machines supervisées (un peu comme si le service
nagios pouvait se connecter en SSH sur la machine supervisée). Le service permettant, sur la machine
supervisée, d’exécuter des commandes est nagios-nrpe-server. Ainsi, le service nagios s’exécutant sur
la machine nagios demande au service nagios-nrpe-server s’éxécutant sur la machine agent d’exécuter
une commande particulière. Si la machine nagios est autorisée à le faire, nagios-nrpe-server exécute
cette commande et retourne le résultat à nagios.
Nous allons utiliser cette extension pour que la machine nagios puisse périodiquement tester si
le service cron (permettant de programmer l’exécution de tâches) est actif sur la machine agent.
Comme le service cron n’est pas un service réseau, cette opération n’est pas possible sans NRPE.
4
P
T
1. Étapes à suivre sur la machine agent :
(a) Toutes les commandes pouvant être exécutées à distance par la machine nagios doivent,
comme les plugins, être placées dans le répertoire /usr/lib/nagios/plugins. Écrire un
script check cron qui teste si le service cron est démarré. Le script devra afficher un
message indiquant l’état du service. Son code de retour sera 0 si le service est actif et 2
si le service est inactif. (Il n’y a pas d’état “avertissement” dans ce cas.)
(b) Autoriser la machine nagios à exécuter des commandes à distance en modifiant le
paramètre allowed hosts du fichier de configuration /etc/nagios/nrpe.cfg.
(c) Dans ce même fichier de configuration, ajouter une ligne définissant la commande distante
check cron :
command[ check_cron ]=/ usr / lib / nagios / plugins / check_cron
(d) Démarrer le service nagios-nrpe-server.
2. Étapes à suivre sur la machine nagios :
5
(a) C’est le plugin check nrpe qui permet d’exécuter à distance des commandes sur d’autres
machines. Tester ce plugin pour vérifier qu’il est possible d’appeler la commande
check cron sur la machine agent :
$ / usr / lib / nagios / plugins / check_nrpe -H <ip - de - agent > -c check_cron
(b) Dans le fichier des commandes (/etc/nagios3/commands.cfg) définir une nouvelle
commande qui utilise le plugin check nrpe pour appeler la commande check cron sur
une machine distante, comme nous l’avons fait dans le point précédent.
(c) Dans le fichier /etc/nagios3/objects/agent.cfg, définir un nouveau service utilisant
la commande définie au point suivant pour tester la disponibilité du service cron sur la
machine agent.
(d) Redémarrer le service nagios.
3. Observer sur l’interface web les changements lorsque le service cron est arrêté ou redémarré
sur la machine agent.
4
P
T
8
0
1
3
M
6

Documents pareils