Groupe Linagora - OBM Online - Planète - Blogs
Logo Linagora.org
Piste: » Linux Tag 2009 - Synchronize OpenLDAP with Active Directory with LSC project » Numérisation et retouche d’images sous GIMP » LINAGORA : La communauté » Guide d'exploitation OpenLDAP » Fichier de configuration Samba » Administration Tomcat » Vérification des signatures des paquets RPM installés » Solution Linux 2009 - WebSSO, synchronisation et gestion des accès via LDAP » Linux Tag 2009 - WebSSO and Access Management with LemonLDAP::NG » Vérification du statut RAID

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 : 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 Ajout d'un script dans les 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

Contributeurs : Clément OUDOT