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