N'ayant pas souhaité passer par le plugin Nagios check_raid afin de ne pas solliciter trop souvent le contrôleur, il a été préférable de créer un script shell pour vérifier une fois par heure l'état d'un Raid.

Voici donc quelques scripts accompagnés de leurs binaires pour effectuer tout cela.

ATTENTION : je n'ai pas encore eu la chance de travailler avec tous les contrôleurs RAID du marché, et il se peut qu'aucun script/binaire ci-dessous ne soit compatible avec votre contrôleur. J'en suis désolé, et il vous faudra soit m'envoyer un petit commentaire pour que je fasse des recherches sur votre carte, soit chercher directement sur Google.

MDADM (Raid logiciel)

Avec mdadm, aucune configuration requise : un mail est envoyé automatiquement en cas de dégradation du tableau RAID.

LSI Logic MegaRAID (MegaRC)

Tout d'abord, télécharger ce binaire et placez-le dans un répertoire nommé raid que vous allez créer dans /root/.

Testez la commande suivante :

root@/root/raid/> ./megarc.bin -dispCfg -a0

Si la commande vous renvoie une erreur disant que qu'il n'a pas trouvé de carte, passez au binaire suivant. S'il vous renvoie un tableau comprenant votre nombre de disques, continuez.

Créez ce script à l'endroit que vous souhaitez (chez moi dans /usr/share/scripts) que vous mettrez en crontab :

  1. #!/bin/sh
  2.  
  3. # Script de verification du RAID
  4.  
  5. ALERTMAIL=votremail@domaine.tld
  6. TMPFILE=/tmp/raid.txt
  7.  
  8. /root/raid/megarc.bin -dispCfg -a0 > $TMPFILE
  9. STATUT=$(cat $TMPFILE | grep "Status: OPTIMAL")
  10.  
  11. if [ "$STATUT" = "" ]; then
  12.  
  13. # mail d'alerte
  14. cat $TMPFILE | mail $ALERTMAIL -s"[warn] Probleme RAID `hostname -f`"
  15.  
  16. fi

LSI Logic MegaRAID (MegaCLI)

Voici un autre binaire permettant d'accéder à d'autres cartes de type MegaRAID.

En version 32bits de votre OS, téléchargez ce binaire et placez-le dans un répertoire nommé raid que vous allez créer dans /root/.

En version 64bits de votre OS, préférez ce binaire que vous placerez au même endroit.

Testez votre commande pour vérifier que c'est le bon binaire :

root@/root/raid/> ./MegaCLI -AdpAllInfo -aAll

Si la commande ne vous renvoie rien, c'est que vous vous êtes trompés, ou que le binaire que vous venez de télécharger sur ce blog n'est plus à jour.

Il vous faudra trouver une nouvelle version que vous pourrez trouver directement sur le site LSI.

Si la commande fonctionne en vous renvoyant tout un tas d'infos, alors crééz le script suivant :

  1. #!/bin/sh
  2.  
  3. # Script de verification du RAID
  4.  
  5. ALERTMAIL=votremail@domaine.tld
  6. TMPFILE=/tmp/raid.txt
  7. # Binaire a utiliser (MegaCLI ou MegaCLI64)
  8. BINAIRE="MegaCLI"
  9.  
  10. /root/raid/$BINAIRE -AdpAllInfo -aAll | egrep "^ *(Degraded|Offline|Critical Disks|Failed Disks).*:" > $TMPFILE
  11. STATUT=$(cat $TMPFILE | grep -v 0)
  12.  
  13. if [ "$STATUT" != "" ]; then
  14.  
  15. # mail d'alerte
  16. cat $TMPFILE | mail $ALERTMAIL -s"[warn] Probleme RAID `hostname -f`"
  17.  
  18. fi

Intel Raid (mptlinux)

Téléchargez le binaire suivant et placez le dans le dossier /usr/local/nrpe/.

Testez la commande suivante :

root@/usr/local/nrpe/> ./mpt-status -i 0

Si vous avez une erreur... Alors c'est que vous n'avez peut-être pas de contrôleur Raid matériel... Ou bien que je n'y suis pas encore tombé dessus pour vous aider :P

Si la commande vous donne des résultats, alors créez le script suivant :

  1. #!/bin/sh
  2.  
  3. # Script de verification du RAID
  4.  
  5. ALERTMAIL=votremail@domaine.tld
  6. TMPFILE=/tmp/raid.txt
  7.  
  8. /usr/local/nrpe/mpt-status -i 0 > $TMPFILE
  9. STATUT=$(cat $TMPFILE | grep "state OPTIMAL")
  10.  
  11. if [ "$STATUT" = "" ]; then
  12.  
  13. # mail d'alerte
  14. cat $TMPFILE | mail $ALERTMAIL -s"[warn] Probleme RAID `hostname -f`"
  15.  
  16. fi

Dernière étape

Il vous suffit de créer une entrée en crontab pour rajouter le script de vérification à un intervalle convenable (1h paraît pas mal).

Vous recevrez un mail en cas de contrôleur dégradé.

Bonne surveillance !