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 --------- PARTIE IX Exercices facultatif 1. Vérifier que Nagios fonctionne vraiment Plutôt que de simplement vérifier qu'un serveur Web tourne 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,... } 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. 2. Vérifiez que SNMP fonctionne 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 recoller les deux morceaux 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 propre chaîne de communauté 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-servers" 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".