====== Vérification du statut RAID ====== ===== Présentation ===== Le script ''check_raid.pl'' lance l'utilitaire ''afacli'' pour obtenir des informations sur le statut des disques RAID. Il crée pour cela un fichier de commandes qui sera lu par afacli. Ce fichier de commandes contient les opérations suivantes : * Démarrage du fichier de log * Ouverture du contrôleur RAID en lecture seule * Liste des disques * Liste de l'espace disque * Fermeture du contrôleur RAID * Arrêt du fichier de log * Sortie du programme Le programme afacli crée alors un fichier de log qui est analysé par le script Perl. Celui-ci stocke chaque disque avec ses différents statuts dans une table de hachage puis le fichier de commandes et le fichier de log sont supprimés. Pour chaque disque, le statut est vérifié : si le statut est "Initialized", "Free" ou "Container", le disque est considéré comme bon, sinon le nombre de disques en erreur est incrémenté et le mauvais statut affiché. Dans l'affichage, un disque en bon état est indiqué entre [] et un disque en mauvais état est indiqué entre <>, chaque disque étant désigné par son numéro sur le bus SCSI. Selon le nombre de disques en erreur et les seuils configurés, le statut Ok, Warning ou Critical est renvoyé. Un statut Unknown est renvoyé si le script a rencontré des problèmes en lisant le contrôleur RAID ou en exécutant le programme afacli. Le message est normalement assez explicite pour corriger la source de l'erreur. Ce script ne fonctionne que pour un contrôleur RAID. Si plusieurs contrôleurs sont présents, il suffit de copier le script et de modifier le paramètre ''$array_name'' (voir le chapitre Configuration interne au script). ===== Pré-requis ===== Ce script nécessite que certains outils soient installés avant de pouvoir fonctionner, dont le driver ''aacraid'' et l'utilitaire en ligne de commande ''afacli''. Nous utilisons ce script sur des serveurs DELL PowerEdge fonctionnant avec le système d'exploitation RedHat 8.0. Le site suivant nous a été d'une aide précieuse lors de l'installation de ces outils : [[http://linux.dell.com/|Dell Linux Community Web]]. Il fournit entre autres des procédures d'installation pour différentes distributions. La première chose à faire est donc d'installer le driver ''aacraid'', sauf s'il est déjà présent dans le noyau, ce qui est le cas par exemple avec la RedHat 8.0. Ensuite il faut créer le device correspondant au contrôleur RAID et installer l'utilitaire ''afacli''. Tout d'abord, depuis la machine possédant le contrôleur RAID, télécharger l'archive contenant les outils : # cd /tmp # wget http://linux.dell.com/files/aacraid/afaapps-2.6-0.tar.gz # tar zxvf afaapps-2.6-0.tar.gz Créer le device et lui donner les droits suffisants pour que les utilisateurs du système puissent y accéder (notamment l'utilisateur ''nagios'') : # cp dev/MAKEDEV.afa /dev # cd /dev # chmod +x MAKEDEV.afa # ./MAKEDEV.afa afa0 # chmod o+rw afa0 Installer ''afacli'' et le rendre exécutable pour les utilisateur du système (notamment l'utilisateur ''nagios'') : # cp usr/sbin/afacli /usr/sbin/ # chmod 755 /usr/sbin/afacli Un test rapide : # /usr/sbin/afacli > open afa0 > controller details > exit S'il existe plusieurs contrôleurs, il faut réitérer l'opération pour afa1, afa2, etc. Pour une plus grande sécurité, il est possible de créer un groupe ''raid'' dont l'utilisateur ''nagios'' serait membre, et de modifier les droits en conséquence. Au niveau de Perl, seul le module ''Getopt::Std'' est utilisé, il doit être également installé. Le système Linux est désormais prêt pour accueillir le script ''check_raid.pl''. ===== Usage ===== Le script s'utilise ainsi : ./check_raid.pl [-w warning_level] [-c critical_level] [-h] Aucun paramètre n'est obligatoire, les paramètres suivants sont facultatifs : * ''warning_level'' : si le nombre de disques en erreur est supérieur ou égal à ce nombre, un statut Warning est affiché dans Nagios. Si ce nombre n'est pas précisé, sa valeur par défaut est de 1. * ''critical_level'' : si le nombre de disques en erreur est supérieur ou égal à ce nombre, un statut Critical est affichédans Nagios. Si ce nombre n'est pas précisé, sa valeur par défaut est de 1. L'option ''-h'' n'exécute pas le script mais affiche un message d'usage simple. Exemple : ./check_raid.pl -w 1 -c 2 ===== Configuration interne au script ===== Des variables sont définies à l'intérieur du script, il est utile de les modifier, par exemple si le nom du contrôle n'est pas "afa0". Il faut alors éditer le script et changer la valeur des variables : * ''$afacli'' : location de l'utilitaire afacli. * ''$array_name'' : nom du contrôleur RAID. * ''$array_device'' : location du device associé au contrôleur RAID. * ''$infile'' : nom et location du fichier de commandes. L'utilisateur qui exécute le script doit pouvoir écrire à cet endroit. * ''$outfile'' : nom et location du fichier de log. L'utilisateur qui exécute le script doit pouvoir écrire à cet endroit. * ''%code'' : table de hachage contenant les codes de retour de Nagios. À moins d'une reprogrammation totale de Nagios, elle ne doit pas être modifiée. * ''$ENV{TERM}'' : valeur de la variable d'environnement TERM, qu'il faut forcer à "xterm" lorsque le script est executé en mode non-interactif (c'est le cas quand il est appelé par Nagios). Sans cette valeur, le programme afacli refuse de démarrer. ===== Intégration dans Nagios ===== L'article [[::contrib::supervision::documentation::ajout_script_commandes_nagios]] décrit les manipulations nécessaires à l'intégration de ce script dans Nagios. Pour exécuter ce script sur des hôtes distants, il est conseillé de passer par la commande ''check_by_ssh'' ou d'utiliser NRPE. ===== Téléchargement ===== * Version 0.1 : {{:contrib:supervision:extensions:check_raid.pl.zip|}} Contributeurs : [[:info:authors:coudot]]