Installation et Configuration de Nagios Notes : ------ * Les commandes précédées de "$" signifient que vous devez exécuter la commande en tant qu'utilisateur général - et non en tant qu'utilisateur root. * Les commandes précédées de "#" signifient que vous devez travailler en tant qu'utilisateur root. * Les commandes comportant des lignes de commande plus spécifiques (par exemple "RTR-GW>" ou "mysql>") signifient que vous exécutez des commandes sur des équipements à distance, ou dans un autre programme. Exercices --------- Exercices Partie I ---------------- 0. Ouvrez une session sur votre PC ou ouvrez une fenêtre de terminal en tant qu'utilisateur sysadm. 1. Il se peut que vous ayez à installer la version 3 de Nagios. Vous devez effectuer cette installation en tant qu'utilisateur root ou sysadmin et utiliser le commande "sudo". Assurez-vous aussi que vous disposez de l'éditeur Vim (VI aMélioré), car ce dernier facilite le travail sur de gros fichiers. En tant que sysadm : $ sudo apt-get install nagios3 vim Sauf si vous avez déjà un agent MTA installé, nagios3 va installer postfix en tant que dépendance. Sélectionnez l'option "Site Internet". (Si vous aviez voulu utiliser un autre agent MTA, vous l'auriez probablement installé avant nagios3) Vous serez invité à entrer le mot de passe nagiosadmin. Entrez le mot de passe d'atelier normal. Pour accéder aux documents dans /usr/share/doc/nagios3-doc/html/ (qui peuvent également être consultés via l'interface web Nagios), entrez : $ sudo apt-get install nagios3-doc 2. Regardez le fichier contenant le mot de passe. Il est haché (crypté) $ cat /etc/nagios3/htpasswd.users 3. Nagios devrait déjà être opérationnel ! - Ouvrez un navigateur et accédez à votre machine de la façon suivante : http://pcN.ws.nsrc.org/nagios3/ - À l'invite de connexion, répondez comme indiqué ci-dessous : username: nagiosadmin pass: Allez jusqu'à la page "Host Detail" (Détail des hôtes) pour voir ce qui est déjà configuré. 4. Examinons l'organisation de la configuration... Mais, devenons tout d'abord l'utilisateur root de votre machine : $ sudo bash # cd /etc/nagios3 # ls -l -rw-r--r-- 1 root root 1882 2008-12-18 13:42 apache2.conf -rw-r--r-- 1 root root 10524 2008-12-18 13:44 cgi.cfg -rw-r--r-- 1 root root 2429 2008-12-18 13:44 commands.cfg drwxr-xr-x 2 root root 4096 2009-02-14 12:33 conf.d -rw-r--r-- 1 root root 26 2009-02-14 12:36 htpasswd.users -rw-r--r-- 1 root root 42539 2008-12-18 13:44 nagios.cfg -rw-r----- 1 root nagios 1293 2008-12-18 13:42 resource.cfg drwxr-xr-x 2 root root 4096 2009-02-14 12:32 stylesheets # cd conf.d # ls -l -rw-r--r-- 1 root root 1695 2008-12-18 13:42 contacts_nagios2.cfg -rw-r--r-- 1 root root 418 2008-12-18 13:42 extinfo_nagios2.cfg -rw-r--r-- 1 root root 1152 2008-12-18 13:42 generic-host_nagios2.cfg -rw-r--r-- 1 root root 1803 2008-12-18 13:42 generic-service_nagios2.cfg -rw-r--r-- 1 root root 210 2009-02-14 12:33 host-gateway_nagios3.cfg -rw-r--r-- 1 root root 976 2008-12-18 13:42 hostgroups_nagios2.cfg -rw-r--r-- 1 root root 2167 2008-12-18 13:42 localhost_nagios2.cfg -rw-r--r-- 1 root root 1005 2008-12-18 13:42 services_nagios2.cfg -rw-r--r-- 1 root root 1609 2008-12-18 13:42 timeperiods_nagios2.cfg Notez que le paquet installe des fichiers dont le nom comporte "nagios2". Ceci est dû au fait qu'il s'agit des mêmes fichiers que ceux utilisés pour le paquet Debian de Nagios version 2. Toutefois, une modification a été apportée au fichier de configuration hôte passerelle "gateway", c´est pourquoi il a été créé avec le nom correct "nagios3". 5. Vous avez une configuration qui surveille déjà votre système (localhost_nagios2.cfg) et votre passerelle amont par défaut (host-gateway_nagios3.cfg). Jetez un coup d'oeil au fichier de configuration de la passerelle par défaut : il est très simple. (Remarque : la fonctionnalité de complétion à l'aide de la touche Tabulation est utile ici. Tapez "cat host-g" puis appuyez sur Tabulation ; le nom du fichier est complété automatiquement) # cat host-gateway_nagios3.cfg # Une définition de l'hôte pour la passerelle de la route par défaut define host { host_name gateway alias Default Gateway address 10.10.0.254 use generic-host } PARTIE II Configuration des équipements ----------------------------------------------------------------------------- 0. Ordre de configuration Conceptuellement nous allons construire nos fichiers de configuration en partant du périphérique "le plus proche" pour aller ensuite vers les plus éloignés. En procédant dans cet ordre, vous définirez les dispositifs faisant office de parents pour d'autres périphériques. En cas de doute, pensez à consulter le schéma du réseau de notre classe. Nous recommandons la création d'instances comme ceci: rtr (routeur de sortie : 10.10.0.254) sw (commutateur de la classe : 10.10.0.253, parent : rtr) rtr1 (routeur du groupe 1 : 10.10.0.201, parent : sw) rtr2 (routeur du groupe 2 : 10.10.0.202, parent : sw) rtr3 (routeur du groupe 3 : 10.10.0.203, parent : sw) rtr4 (routeur du groupe 4 : 10.10.0.204, parent : sw) rtr5 (routeur du groupe 5 : 10.10.0.205, parent : sw) rtr6 (routeur du groupe 6 : 10.10.0.206, parent : sw) rtr7 (routeur du groupe 7 : 10.10.0.207, parent : sw) rtr8 (routeur du groupe 8 : 10.10.0.208, parent : sw) rtr9 (routeur du groupe 9 : 10.10.0.209, parent : sw) rtr10 (routeur du groupe 10 : 10.10.0.210, parent : sw) pc1 (10.10.0.1, parent : s1) pc2 (10.10.0.2, parent : s2) pc3 (10.10.0.2, parent : s1) pc4 (10.10.0.2, parent : s2) . pc19 (10.10.0.19, parent : s1) pc20 (10.10.0.20, parent : s2) (remarquez que les PC impaires ont comme parent s1, les paires, s2) s1 (sur le backbone : 10.10.0.241, parent : sw) s2 (sur le backbone : 10.10.0.242, parent : sw) noc (sur le backbone : 10.10.0.250, parent : sw) ap1 (sur le backbone : 10.10.0.251, parent : sw) Nous recommandons d'intégrer ces éléments dans les fichiers suivants : routers.cfg (rtr, ap1, rtr1...rtr10) switches.cfg (sw, s1, s2) noc.cfg (noc) group1pcs.cfg (pc1, pc2) group2pcs.cfg (pc3, pc4) group3pcs.cfg (pc5, pc6) group4pcs.cfg (pc7, pc8) group5pcs.cfg (pc9, pc10) group6pcs.cfg (pc11, pc12) group7pcs.cfg (pc13, pc14) group8pcs.cfg (pc15, pc16) group9pcs.cfg (pc17, pc18) group10pcs.cfg (pc19, pc20) 1. Nous devons d'abord indiquer à Nagios de surveiller le routeur de passerelle de notre classe, à savoir 10.10.0.254 : # cd /etc/nagios3/conf.d/ Créez le routeur de passerelle de la manière suivante : # editor routers.cfg define host { use generic-host host_name rtr alias Gateway router address 10.10.0.254 } Dans le même fichier, créez les configs pour les routeurs du groupe : define host { use generic-host host_name rtr1 alias Group 1 Router address 10.10.0.201 parents sw } Procédez de même pour ap1, rtr2, rtr3, rtr4, rtr5, rtr6, rtr7, rtr8, rtr9, rtr10 Notez que l'entrée "sw" pour notre commutateur de passerelle n'a pas encore été créée. C'est la prochaine étape. Sauvegardez le fichier et quittez. 2. Créez un fichier nommé switches.cfg et ajoutez une entrée pour cet élément : # editor switches.cfg define host { use generic-host host_name sw alias Backbone switch address 10.10.0.253 parents rtr } Ajoutons également nos commutateurs virtuels - s1 et s2 (les parents étant sw) : Par exemple : define host { use generic-host host_name s1 alias s1 address 10.10.0.241 parents sw } define host { use generic-host host_name s2 alias s2 address 10.10.0.242 parents sw } Sauvegardez et quittez : À ce stade, Nagios est configuré pour surveiller si nos hôtes principaux (les parents) sont actifs (UP)sur le réseau de notre classe. La prochaine étape consiste à ajouter les différents hôtes, à savoir les images des PC virtuels de la classe (pc1 à pc39) Veillez à ajouter l´entrée "parents" correcte pour chaque hôte. Rappelez-vous que si vous ne comprenez pas les relations de parenté existant au sein de notre réseau, vous pouvez consulter le schéma logique de ce dernier ici : http://noc.ws.nsrc.org/dakar-gestion-supervision-reseau/wiki/TopologieReseau Faites référence aux transparents de la présentation qui parlent de la gestion des parents, dans la présentation: "Notion de Parents" LES ÉTAPES 2A - 2C DOIVENT ÊTRE RÉPÉTÉES À CHAQUE MISE À JOUR DE LA CONFIGURATION ! 2a. Vérifiez que vos fichiers de configuration sont corrects : # nagios3 -v /etc/nagios3/nagios.cfg ... Le système devrait renvoyer des avertissements du type : Warning: Host 'rtr' has no services associated with it! Warning: Host 'sw' has no services associated with it! etc. ... Total Warnings: N Total Errors: 0 Les choses semblent normales - Aucun problème grave n'a été décelé pendant le contrôle. Nagios indique qu'il est inhabituel de surveiller un périphérique aux seules fins de s'assurer de son existence sur le réseau, sans surveiller également les services associés. 2b. Rechargez/Redémarrez Nagios # /etc/init.d/nagios3 restart L'utilisation de l'option "restart" (redémarrage) n'est pas toujours fiable à 100 % en raison d'un bogue dans le script d'initialisation de Nagios. Par sécurité, vous pouvez prendre l'habitude de procéder comme ci-dessous : # /etc/init.d/nagios3 stop # /etc/init.d/nagios3 start 2c. Accédez à l'interface web (http://pcN.ws.nsrc.org/nagios3) et vérifiez que les hôtes que vous venez d'ajouter sont visibles dans l'interface. Cliquez sur "Host Detail" (Détail des hôtes) sur la gauche de l'écran Nagios pour vérifier. L'état qui s'affiche peut être "PENDING" (en attente) jusqu'à ce que le contrôle soit effectué. ASTUCE : Vous allez devoir répéter cette opération à plusieurs reprises. Si vous regroupez l'ensemble sur une seule ligne, comme ci-dessous, alors vous pourrez utiliser la touche de déplacement vers le haut et relancer le tout en une seule fois : nagios3 -v /etc/nagios3/nagios.cfg && /etc/init.d/nagios3 restart Le double '&&' assure que le redémarrage n'aura lieu que si la configuration est valide. 3. Créez les entrées pour les PC de la classe Maintenant que nos routeurs et commutateurs sont définis, nous allons pouvoir créer des entrées pour tous nos PC très facilement. Pensez aux relations de parenté : Ici encore, si vous ne comprenez pas la relation de parenté, pensez à consulter le schéma du réseau de la classe à l'adresse suivante: http://noc.ws.nsrc.org/dakar-gestion-supervision-reseau/wiki/TopologieReseau Voici trois exemples d'entrées. Une pour le NOC, une pour le pc1 et une autre pour le pc20. Vous devriez pouvoir utiliser cet exemple pour créer des entrées pour tous les PC de la classe plus le NOC. Nous pourrions placer ces entrées dans des fichiers séparés mais, étant donné la petite taille de notre réseau, nous allons utiliser un seul fichier appelé pcs.cfg. REMARQUE : Ne créez pas d'entrée pour votre propre PC ou routeur. Cela a déjà été fait dans le fichier /etc/nagios3/conf.d/localhost_nagios2.cfg. Cette définition permet de définir le point de vue du réseau Nagios. Par conséquent, lorsque vous arrivez à l'étape où vous pourriez créer une entrée pour votre PC, ignorez-la et passez au PC suivant dans la liste. Décrivons d'abord les machines de notre NOC qui, pour le moment, comprend une machine. # editor noc.cfg # le NOC de notre classe define host { use generic-host host_name noc alias machine du NOC de l'atelier address 10.10.0.250 parents sw } Enregistrez et fermez le fichier. Créez ensuite un fichier pour décrire les périphériques du groupe un, en procédant comme indiqué ci-dessous : # editor group1pcs.cfg # PCs define host { use generic-host host_name pc1 alias pc1 address 10.10.0.1 parents s1 } define host { use generic-host host_name pc2 alias pc2 address 10.10.0.2 parents s2 } Procédez ainsi pour tous les PC du groupe 1 ; notez que le parent est conservé. Lorsque vous avez terminé, sauvegardez et fermez le fichier. Faites de même pour les PC du groupe 2 : # editor group2pcs.cfg define host { use generic-host host_name pc3 alias pc3 address 10.10.0.3 parents s1 } define host { use generic-host host_name pc4 alias pc4 address 10.10.0.4 parents s2 } Procédez ainsi pour tous les PC du groupe 2 ; notez bien le parent s1/s2 (PC impaires = parent s1, paires = parent s2). Lorsque vous avez terminé, sauvegardez et fermez le fichier. Faites attention aux entrées des parents et aux adresses IP. Prenez les trois entrées ci-dessus et développez-les pour créer les entrées restantes organisées par groupe pour tous les PC actifs. En d'autres termes, créez les entrées des PC 1 à 20 par groupe (en pensant à ignorer votre PC). Comme précédemment, répétez les étapes 2a à 2c pour vérifier votre configuration, corrigez les erreurs éventuelles et activez-la. 5. Visualisez votre instance Nagios sur le web. Notez que "Status Map" (Carte d´état) vous offre une représentation graphique des relations parent-enfant que vous avez définies. PARTIE III Configurer le contrôle des services du NOC de la classe ------------------------------------------------------- 0. Configuration Maintenant que notre matériel est configuré, nous pouvons commencer à indiquer à Nagios les services à surveiller sur le matériel configuré, comment regrouper le matériel de façon intéressante, comment regrouper les services, etc. 1. Affectez un contrôle de services au NOC de notre classe # editor hostgroups_nagios2.cfg - Trouver le groupe d'hôtes nommé "ssh-servers". Dans la section membres de la définition, remplacez la ligne : members localhost par members localhost,noc Sauvegardez le fichier et quittez Vérifiez que vos modifications sont correctes : # nagios3 -v /etc/nagios3/nagios.cfg Redémarrez Nagios pour voir les nouveaux services associés à votre hôte : # /etc/init.d/nagios3 restart Cliquez sur "Service Detail" (Détails du service) dans l'interface web de Nagios pour voir votre nouvelle entrée. PARTIE IV Définition des services pour tous les PC ----------------------------------------------------------------------------- 0. Par défaut, l'intervalle de contrôle normal (normal_check_interval) des services est de 5 (minutes) dans generic-service_nagios2.cfg. Vous pouvez porter cette valeur à 1 pour accélérer la détection des problèmes de service, tout du moins dans l'atelier. 1. Déterminez les services à définir et les périphériques associés - C'est le coeur même de l'utilisation de Nagios et des outils de surveillance réseau en général. Jusqu'ici, nous avons simplement utilisé la commande ping pour vérifier que les hôtes physiques sont actifs sur notre réseau et nous avons commencé à surveiller un seul service sur un seul hôte (votre PC). La prochaine étape consiste à décider quels services vous souhaitez surveiller pour chacun des hôtes de la classe. - Caractéristiques de cette classe particulière : Routeurs : Service ssh et snmp Commutateurs : Service telnet et éventuellement ssh ainsi que snmp PC : Tous les PC offrent un service ssh et http et devraient avoir un service SNMP maintenant Le NOC offre aussi un service snmp Nous allons donc configurer Nagios afin qu'il vérifie ces services sur ces périphériques. 2.) Vérifiez que SSH est exécuté sur les routeurs et les images des PC de l'atelier - Dans le fichier services_nagios2.cfg, il existe déjà une entrée pour le contrôle des services SSH, vous n'avez donc pas besoin de créer cette étape. Au lieu de cela, il vous suffit de redéfinir l'entrée "ssh-servers" dans le fichier /etc/nagios3/conf.d/hostgroups_nagios2.cfg. L'entrée initiale dans le fichier ressemblait à ceci : # A list of your ssh-accessible servers define hostgroup { hostgroup_name ssh-servers alias SSH servers members localhost,noc } Que faut-il modifier à votre avis ? Corriger la ligne "members". Vous devez créer des entrées pour tous les PC de la classe, les routeurs et les commutateurs exécutant ssh. Avec ces informations et le schéma du réseau, vous devriez pouvoir finaliser cette entrée. L'entrée devrait ressembler à ceci : define hostgroup { hostgroup_name ssh-servers alias SSH servers members localhost,pc1,pc2,pc3,pc4,pc5,pc6,pc7,pc8,pc9,pc10,pc11,pc12,pc13,pc14,pc15,pc16,pc17,pc18,pc19,pc20 } Remarque : conservez "localhost" - Cette entrée identifie votre PC et représente le point de vue réseau de Nagios. Ainsi, par exemple, si vous êtes sur le "pc3", vous ne devrez pas inclure "pc3" dans la liste des PC de la classe, car il est représenté par l'entrée "localhost". L'entrée "members" sera une longue ligne et bouclera probablement à l'écran. Pensez à inclure l'ensemble des PC et routeurs que vous avez définis. N'incluez pas d'entrées si elles ne sont pas déjà définies dans pcs.cfg, switches.cfg ou routers.cfg. - Lorsque vous avez terminé, effectuez le contrôle avant démarrage : # nagios3 -v /etc/nagios3/nagios.cfg Si tout semble correct, redémarrez Nagios # /etc/init.d/nagios3 stop # /etc/init.d/nagios3 start et visualisez vos modifications dans l'interface web de Nagios. Pour poursuivre avec les groupes d'hôtes, vous pouvez créer des groupes supplémentaires pour une utilisation ultérieure, comme par exemple tous nos serveurs virtuels. N´hésitez pas à modifier de nouveau le fichier hostgroups_nagios2.cfg : # editor hostgroups_nagios2.cfg et ajoutez les lignes suivantes à la fin du fichier : # Une liste de routeurs virtuels define hostgroup { hostgroup_name cisco7200 alias Cisco 7200 Routers members rtr1,rtr2,rtr3,rtr4,rtr5,rtr6,rtr7,rtr8,rtr9,rtr10 } Enregistrez et fermez le fichier. Vérifiez que tout est correct : # nagios3 -v /etc/nagios3/nagios.cfg Si tout semble correct, alors redémarrez Nagios # /etc/init.d/nagios3 stop # /etc/init.d/nagios3 start 3.) Vérifiez que http fonctionne sur tous les PC de la classe. - Cette étape est presque identique à l'exercice précédent. Il vous suffit de modifier la création du service HTTP pour chaque PC (pas de routeurs ou de commutateurs). Rappelez-vous que vous n'avez pas besoin d'ajouter votre machine car celle-ci est déjà définie en tant que "localhost". 4.) OPTIONS SUPPLÉMENTAIRES : Plutôt que de simplement vérifier qu'un serveur Web est exécuté sur les PC de la classe, vous pourriez également vérifier que le service nagios3 est disponible, en demandant le chemin /nagios3/. Cela signifie passer des options supplémentaires au plugin check_http. Pour une description des options disponibles, tapez les commandes suivantes : # /usr/lib/nagios/plugins/check_http # /usr/lib/nagios/plugins/check_http --help et bien sûr vous pouvez consulter la documentation nagios en ligne ou rechercher sur Google des informations sur check_http. Vous pouvez même lancer le plugin manuellement pour effectuer un contrôle ponctuel de service : # /usr/lib/nagios/plugins/check_http -H localhost -u /nagios3/ L'objectif est donc de configurer Nagios pour invoquer check_http de cette manière. Créez un fichier pour stocker les informations, qu'on appellera service-nagios.cfg # editor service-nagios.cfg define command{ command_name check_http_arg command_line /usr/lib/nagios/plugins/check_http -H '$HOSTADDRESS$' $ARG1$ } define service { hostgroup_name nagios-servers service_description NAGIOS check_command check_http_arg!-u /nagios3/ use generic-service } Sauvegardez et fermez le fichier ; vous devrez bien sûr créer un groupe d'hôtes appelé nagios-servers pour créer un lien vers ce contrôle de services. # editor hostgroups_nagios2.cfg À la fin du fichier, ajoutez les lignes suivantes : define hostgroup { hostgroup_name nagios-servers alias Servers faisant tourner Nagios members localhost,pc1,pc2,pc3,pc4,pc5,pc6,pc7,pc8,pc9,pc10,pc11,pc12,pc13,pc14,pc15,pc16,pc17,pc18,pc19,pc20 } Ajoutez tous les serveurs de la salle (jusqu'à 20) Ceci étant fait, vérifiez que Nagios affiche une alerte d'échec d'authentification (car il essaie de télécharger la page sans fournir le nom d'utilisateur/mot de passe). Il existe un paramètre supplémentaire que vous pouvez passer à check_http_arg pour obtenir cette information ; voyons si vous arrivez à le trouver. EXPLICATION ENNUYEUSE: ATTENTION : selon la tradition du "Debian aime tout changer", la définition que donne Debian de la commande check_http dans /etc/nagios-plugins/config/http.cfg n'est *pas* la même que celle recommandée dans la documentation nagios3. Il manque $ARG1$, ce qui fait que les paramètres à passer à check_http sont ignorés. Vous pourriez ainsi penser surveiller /nagios3/ alors qu´en réalité vous surveillez la racine ! C'est pourquoi nous avons dû créer une nouvelle définition de commande, "check_http_arg". Vous pourriez en créer une plus spécifique telle que "check_nagios" ou modifier la définition Ubuntu de check_http afin qu'elle corresponde à l'usage courant. PARTIE V Création d'autres groupes d'hôtes ----------------------------------------------------------------------------- 0. Dans l'affichage Web, consultez les pages "Hostgroup Overview" (Vue d´ensemble des groupes d´hôtes), "Hostgroup Summary" (Résumé des groupes d´hôtes), "Hostgroup Grid" (Liste des groupes d´hôtes). Ceci permet de regrouper facilement des hôtes ayant des caractéristiques communes (par exemple, hôtes sur le même site ou ayant le même rôle). 1. Mettez à jour /etc/nagios3/conf.d/hostgroups_nagios2.cfg - Pour les exercices qui suivent, il sera très utile de créer ou de modifier les groupes d'hôtes suivants : Serveurs Debian Routeurs Commutateurs Si vous modifiez le fichier /etc/nagios3/conf.d/hostgroups_nagios2.cfg, vous verrez une entrée pour les serveurs Debian contenant uniquement l'hôte local (localhost). Modifiez cette entrée afin qu'elle inclue tous les PC de la classe, y compris le NOC (cela suppose que vous avez créé une entrée "noc" dans votre fichier pcs.cfg). Pensez à ignorer l'entrée de votre PC car il est représenté par l'entrée localhost. # editor /etc/nagios3/conf.d/hostgroups_nagios2.cfg Mettez à jour l'entrée suivante : # A list of your Debian GNU/Linux servers define hostgroup { hostgroup_name debian-servers alias Debian GNU/Linux Servers members localhost } De sorte que le paramètre "members" ressemble aux lignes suivantes. Utilisez votre schéma du réseau de la classe afin de confirmer le nombre exact de machines et de noms dans votre atelier. members localhost,noc,pc1,pc2,pc3,pc4,pc5,pc6,pc7,pc8,pc9,pc10,pc11,pc12,pc13,pc14,pc15,pc16,pc17,pc18,pc19,pc20 Veillez à ce que la ligne boucle et qu'elle ne soit pas sur deux lignes distinctes. Dans le cas contraire vous obtiendrez une erreur lorsque vous redémarrerez Nagios. Rappelez-vous que votre PC est "localhost". - Ceci étant fait, créez deux groupes d'hôtes supplémentaires, un pour les routeurs et l'autre pour les commutateurs. Appelez ces entrées "routers" et "switches". - Lorsque vous avez terminé, veillez à vérifier votre travail et redémarrez Nagios. - N´oubliez pas d´ignorer l'entrée de votre PC car il est représenté par l'entrée localhost. 2. Revenez à l'interface web et regardez vos nouveaux groupes d'hôtes PARTIE VI Création de groupes de service ----------------------------------------------------------------------------- 1. Créez des groupes de services ssh et http pour chaque série de PC. - L'objectif, ici, est de créer trois groupes de services. Chaque groupe de service sera pour chaque paire de PC (1-2, 3-4). Nous voulons regrouper ces PC et inclure l'état de leurs services ssh et http. Pour ce faire, créez le fichier suivant : # editor /etc/nagios3/conf.d/servicegroups.cfg Voici un échantillon du groupe de service pour le groupe 1 : define servicegroup { servicegroup_name group1-servers alias group 1 servers members pc1,SSH,pc1,HTTP,pc2,SSH,pc2,HTTP } define servicegroup { servicegroup_name group2-servers alias group 2 servers members pc3,SSH,pc3,HTTP,pc4,SSH,pc4,HTTP } - Notez que la ligne "members" doit boucler (ne doit pas être sur deux lignes) - Notez que "SSH" et "HTTP" doivent être en majuscules car c'est ainsi qu'apparaît la service_description dans le fichier /etc/nagios3/conf.d/services_nagios2.cfg - Vous devez également créer une entrée pour les autres groupes de serveurs - Enregistrez vos modifications, vérifiez votre travail et redémarrez Nagios. Maintenant, si vous cliquez sur les rubriques du menu Servicegroup dans l'interface web de Nagios, vous devriez voir ces informations regroupées. PARTIE VII Configuration de l'accès public à l'interface web de Nagios ----------------------------------------------------------------------------- 1. Modifiez le fichier /etc/nagios3/cgi.cfg de façon à donner un accès public (guest) en lecture seule à l'interface web de Nagios. - Par défaut, Nagios est configuré pour donner à l'utilisateur nagiosadmin un accès complet en lecture/écriture via l'interface web de Nagios. Vous pouvez changer le nom de cet utilisateur, ajouter d'autres utilisateurs, modifier le mode d'authentification des utilisateurs, définir les utilisateurs ayant accès aux différentes ressources et bien d'autres choses encore via le fichier cgi.cfg. - Créons tout d'abord un utilisateur et mot de passe "guest" (invité) dans le fichier htpasswd.users. # htpasswd /etc/nagios3/htpasswd.users guest Vous pouvez utiliser n'importe quel mot de passe (ou aucun). Choisir pour mot de passe "guest" n'est pas un mauvais choix. - Modifiez ensuite le fichier /etc/nagios3/cgi.cfg et regardez quel type d'accès a été donné à l'utilisateur nagiosadmin. Par défaut, vous verrez les directives suivantes (à noter la présence de commentaires entre chaque directive) : authorized_for_system_information=nagiosadmin authorized_for_configuration_information=nagiosadmin authorized_for_system_commands=nagiosadmin authorized_for_all_services=nagiosadmin authorized_for_all_hosts=nagiosadmin authorized_for_all_service_commands=nagiosadmin authorized_for_all_host_commands=nagiosadmin Nous allons maintenant indiquer à Nagios d'accorder à l'utilisateur "guest" un certain niveau d´accès aux informations via l'interface web. Vous pouvez choisir ce que vous souhaitez, mais les autorisations d'accès se présentent généralement de la manière suivante : authorized_for_system_information=nagiosadmin,guest authorized_for_configuration_information=nagiosadmin,guest authorized_for_system_commands=nagiosadmin authorized_for_all_services=nagiosadmin,guest authorized_for_all_hosts=nagiosadmin,guest authorized_for_all_service_commands=nagiosadmin authorized_for_all_host_commands=nagiosadmin - Une fois les modifications effectuées, enregistrez le fichier cgi.cfg, vérifiez votre travail et redémarrez Nagios. - Pour voir si vous pouvez vous connecter en tant qu'utilisateur "guest", il peut être nécessaire d'effacer les cookies de votre navigateur internet. Vous ne remarquerez aucune différence au niveau de l'interface web. La différence réside dans le fait qu'un certain nombre d'éléments accessibles via l'interface web (forcer un contrôle de services/hôtes, planifier les contrôles, faire des commentaires, etc) ne fonctionnent pas pour l'utilisateur invité. PARTIE VIII Informations étendues d´hôte ("améliorer l'aspect de vos graphiques") ----------------------------------------------------------------------------- 1. Mettez à jour extinfo_nagios2.cfg - Si vous souhaitez utiliser des icônes appropriées pour les hôtes que vous avez définis dans Nagios, c'est ici qu'il faut le faire. Nous avons les trois types de périphériques : Routeurs Cisco Commutateurs Cisco Serveurs Ubuntu Il y a une collection assez importante d'icônes à votre disposition ici : /usr/share/nagios3/htdocs/images/logos/ Elles ont été installées par défaut sous forme de paquets dépendants du paquet nagios3 sous Ubuntu. Dans certains cas, vous pouvez trouver des icônes spécifiques au modèle de votre matériel, mais afin de simplifier les choses, nous allons utiliser les icônes suivantes pour notre matériel : /usr/share/nagios3/htdocs/images/logos/base/debian.* /usr/share/nagios3/htdocs/images/logos/cook/router.* /usr/share/nagios3/htdocs/images/logos/cook/switch.* - La prochaine étape consiste à modifier le fichier /etc/nagios3/conf.d/extinfo_nagios2.cfg et à indiquer à nagios l'image que vous souhaitez utiliser pour représenter vos périphériques. # editor /etc/nagios3/conf.d/extinfo_nagios2.cfg Voici à quoi ressemble une entrée pour vos routeurs (il existe déjà une entrée pour les serveurs Debian qui fonctionnera sans modification). Notez que le modèle de routeur (3600) n'est pas d'une importance capitale. L'image utilisée représente un routeur type. define hostextinfo { hostgroup_name routers icon_image cook/router.png icon_image_alt Cisco Routers (3600) vrml_image router.png statusmap_image cook/router.gd2 } Créez maintenant une entrée pour vos commutateurs. Ceci étant fait, vérifiez votre travail et redémarrez Nagios. Jetez un oeil au "Status Map" (graphique d´état des hôtes) dans l'interface web. Le graphique devrait avoir meilleur aspect, avec de véritables icônes à la place des points d'interrogation. EN OPTION -------- * Vérifiez que SNMP est exécuté sur le NOC de la classe - Vous devrez d'abord créer le contrôle de service SNMP approprié dans le fichier /etc/nagios3/conf.d/services_nagios2.cfg. C'est en cela que Nagios est vraiment impressionnant. Il existe des centaines, si ce n'est des milliers, de contrôles de service accessibles via les différents sites Nagios sur internet. Pour savoir quels plugins sont installés par Ubuntu dans le paquet Nagios3 que nous avons installé, consultez le répertoire suivant: # ls /usr/lib/nagios/plugins Comme vous pouvez le constater, nous disposons déjà d'un plugin check_snmp. Si vous êtes intéressé par les options que prend le plugin, vous pouvez l'exécuter depuis la ligne de commande en tapant : # /usr/lib/nagios/plugins/check_snmp # /usr/lib/nagios/plugins/check_snmp --help Afin de connaître, entre autres, les options disponibles, le plugin check_snmp et Nagios permettent de créer des contrôles système très complexes ou spécifiques. - Pour voir les différents contrôles de services/hôtes qui ont été créés avec le plugin check_snmp, consultez le fichier /etc/nagios-plugins/config/snmp.cfg. Vous verrez qu'il existe un grand nombre de contrôles préconfigurés utilisant snmp, parmi lesquels : snmp_load snmp_cpustats snmp_procname snmp_disk snmp_mem snmp_swap snmp_procs snmp_users snmp_mem2 snmp_swap2 snmp_mem3 snmp_swap3 snmp_disk2 snmp_tcpopen snmp_tcpstats snmp_bgpstate check_netapp_uptime check_netapp_cupuload check_netapp_numdisks check_compaq_thermalCondition Mieux encore, vous pouvez créer très facilement d'autres contrôles de services. Afin de vérifier que snmpd (le service SNMP sous Linux) fonctionne, nous devons interroger SNMP. En l'absence de réponse, Nagios considèrera que le service SNMP ne fonctionne pas sur cet hôte. Les plugins de contrôle de service que vous utilisez, tels que check_http, check_ssh et check_telnet, procèdent de la même manière. - Dans le cas présent, nous allons créer un nouveau contrôle de service que nous appellerons "check_system". Ce contrôle de service se connectera à l'hôte spécifié, utilisera la chaîne de communauté privée que nous avons définie en classe et interrogera snmp - dans le cas présent, nous demanderons la description du système, ou l'OID "sysDescr.0" - - Pour ce faire, commencez par éditer le fichier /etc/nagios-plugins/config/snmp.cfg : # editor /etc/nagios-plugins/config/snmp.cfg Au début du fichier (ou à la fin, au choix), ajoutez l'entrée suivante : (Vous pouvez la copier-coller au lieu d'essayer de la ressaisir.) # definition de la commande 'check_system' define command{ command_name check_system command_line /usr/lib/nagios/plugins/check_snmp -H '$HOSTADDRESS$' -C '$ARG1$' -o sysDescr.0 } Vous noterez que "command_line" ne constitue qu'une seule ligne. Si vous effectuez un copier-coller de la ligne dans votre éditeur, il se peut qu'elle ne boucle pas correctement et que vous deviez ajouter manuellement la dernière partie de la ligne: '$ARG1$' -o sysDescr.0 (... en fin de ligne.) - Vous devez maintenant modifier le fichier /etc/nagios3/conf.d/services_nagios2.cfg en ajoutant ce contrôle de service. Nous allons exécuter ce contrôle sur l'ensemble des serveurs de la classe ou sur le groupe d'hôtes "debian-servers". - Modifiez le fichier /etc/nagios3/conf.d/services_nagios2.cfg # editor /etc/nagios3/conf.d/services_nagios2.cfg À la fin du fichier, ajoutez la définition suivante : # verifier que snmp tourne sur tous nos serveurs define service { hostgroup_name snmp-servers service_description SNMP check_command check_system!xxxxxx use generic-service notification_interval 0 # spécifiez une valeur > 0 si vous voulez être renotifié } "xxxxxx" est la chaîne de communauté privée qui a été (ou qui sera) définie pour la classe. Vous noterez que nous avons inclus ici notre chaîne de communauté privée au lieu de la coder en dur dans le fichier snmp.cfg à une étape précédente. Vous devez remplacer les "xxxxx" par la chaîne de communauté snmp donnée en classe, faute de quoi ce contrôle ne fonctionnera pas. - Nous devons maintenant créer le groupe "snmp-serveurs" dans notre fichier hostgroups_nagios2.cfg. Modifiez le fichier /etc/nagios3/conf.d/hostgroups_nagios2.cfg et allez à la fin du fichier. Créez la définition de groupe d'hôtes suivante : # Une liste de machines qui offrent un service SNMP, sur lesquelles nous allons # verifier ce service define hostgroup { hostgroup_name snmp-servers alias snmp servers members noc } - Notez que pour "members", vous pourriez également créer les commutateurs et routeurs des groupes 1 et 2. Mais l'élément particulier (MIB) que nous recherchons, "sysDescr.0", peut ne pas être présent sur les commutateurs et/ou routeurs, entraînant l'échec du contrôle. - Vérifiez maintenant que vos modifications sont correctes et redémarrez Nagios. - Si vous cliquez sur la rubrique Service Detail de l'interface web, vous devriez voir apparaître le contrôle SNMP pour l'hôte du NOC. - Après la présentation et les exercices SNMP en classe, vous pourrez revenir à cet exercice et ajouter tous les ordinateurs de la classe à la liste des membres dans le fichier hostgroups_nagios2.cfg, définition des groupes d'hôtes snmp-serveurs. N'oubliez pas de définir votre PC en tant que "localhost".