Plugin Quotas Tree Celerra
02/04/10 06:56 Classé dans: Techniques
Création d’un plugin Nagios pour superviser les Quotas Tree d’un NAS Celerra
Depuis quelques temps, j’ai la responsabilité d’assurer l’administration d’un NAS NS 42 G d’EMC. Nous utilisons les Quotas Tree pour les partages utilisateurs. Pour en assurer la maintenance, nous utilisons la console Web du Celerra. Malheureusement il n’existe pas, tout du moins livré en standard, d’outil permettant une administration automatique avec une gestion d’alerte (il existe bien une gestion de notification mais un peu usine à gaz). Ayant une supervision Nagios sur le site, j’ai donc réfléchi à l’utilisation de celle-ci pour les Quotas Tree.
En surfant sur le web, j’ai constaté qu’il n’y avait pas beaucoup d’informations sur la supervision d’un NAS Celerra d’EMC. Donc, j’ai pris mon courage à deux mains et je me suis dis qu’il fallait créer un plugin Nagios de toute pièce.
Utilisation du plugin check_by_ssh
Je me suis orienté sur la création d’un script sur la Control Station du Celerra pour me retourner les valeurs nécessaires à Nagios. Pour exécuter un script à distance sur Linux, rien ne vaut le protocole ssh installé généralement sur la majorité des distribution Linux. La Control Station d’EMC ne déroge pas à la règle, c’est une bonne vielle Red-Hat modifiée à la sauce EMC.
Je ne rentrerai pas en détail sur le fonctionnement de ssh et de son plugin check_by_ssh installé normalement dans Nagios. Vous trouverez toutes les informations nécessaires sur le Wiki de Monitoring-fr.org réalisé par Pierre Levasseur. On partira du principe que vous avez réalisé votre approbation avec la clé publique entre Nagios et la Control Station.
Attention, il est important d’avoir une session Nagios valide sur le serveur de Supervision pour le dépôt de la clé. A ce stade vous devez pouvoir lancer la commande avec l’utilisateur nagios :
nagios@SERVEUR_NAGIOS: ./check_by_ssh -H
Du serveur Nagios, vous devez être capable de lister le répertoire Home de l’utilisateur nasadmin. L’astuce de cette ligne de commande réside dans l’ajout du paramètre -E 31 qui inhibe le message legal d’EMC à l’ouverture de session.
Création d’un script
Dans l’exploitation de notre site, nous avons besoin de superviser les Quotas Tree de chaque FileSytem du Celerra. Nous avons privilégié les alertes des limites Softs et Hard des Quotas Tree. Comme il relativement complexe de récupérer le nom du Quotas Tree en alarme (deux syntaxes différentes pour la commande nas_quotas) nous avons privilégié la simplicité et nous remonterons que la somme des Quotas Tree en alarme. Voici le script à insérer dans le home directory de nasadmin.
#!/bin/bashEnsuite il suffira de rendre le script exécutable et de vérifier sur la Control Station le bon fonctionnement de celui-ci.
# réalisé le 01/04/2010
# script pour retourner le nb de Quota tree ainsi que le nonbre de soft limite et hard limite
# paramètre $1 : nom du File System
# variable d'environement pour la commande nas_quota
NAS_DB=/nas
export NAS_DB
# pourcentage à atteindre pour la valeur critique
quotaHard=97
LUsed=`/nas/bin/nas_quotas -report -tree -fs $1 | grep "|#" | cut -d "|" -f3`
LSoft=`/nas/bin/nas_quotas -report -tree -fs $1 | grep "|#" | cut -d "|" -f4`
LHard=`/nas/bin/nas_quotas -report -tree -fs $1 | grep "|#" | cut -d "|" -f5`
indice=0
for i in $LUsed
do
let indice=$indice+1
TabUsed[$indice]=$i
done
indice=0
for i in $LSoft
do
let indice=$indice+1
TabSoft[$indice]=$i
done
indice=0
for i in $LHard
do
let indice=$indice+1
TabHard[$indice]=$i
done
qteUsed=$indice
qteOk=0
qteSoft=0
qteHard=0
for j in `seq $indice` ; do
let limiteHard=$((quotaHard*TabHard[$j]/100))
if [ ${TabUsed[$j]} -gt $limiteHard ]
then
let qteHard=$qteHard+1
else
if [ ${TabUsed[$j]} -gt ${TabSoft[$j]} ]
then
let qteSoft=$qteSoft+1
else
let qteOk=$qteOk+1
fi
fi
done
info="Erreur!"
if [ $qteHard -gt 0 ]
then
info="CRITICAL"
info_valeur=2
else
if [ $qteSoft -gt 0 ]
then
info="WARNING"
info_valeur=1
else
info="OK"
info_valeur=0
fi
fi
#on retourne les valeurs pour Nagios
#used est remplacé par quota_ok pour éviter la confusion avec used (disk) dans Centreon pour les graphes
diag="QuotaTree $info - Quota Tree sur $1 sont $info TOTAL: $qteUsed LIMITE SOFT: $qteSoft LIMITE HARD: $qteHard | quota_ok=$qteUsed soft=$qteSoft hard=$qteHard"
echo $diag
#on retourne l'état de la commande 0 : OK, 1 : Warning, 2 : Critique
exit $info_valeur
Création de la commande et du service Nagios
Il ne reste plus qu’à créer la commande Nagios. Pour ma part, j’utilise l’interface graphique de Centreon. Voici le résultat
define command{et pour le service
command_name check_by_ssh
command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -l $ARG1$ -E 31 -C $ARG2$
}
define service{Et voila un plugin remontant les alarmes des Quotas Tree d’un Celerra NS 42 G. Il ne reste plus qu’à paramétrer les alertes en fonction de vos exigences.
host_name Celerra
service_description quota-tree
use generic-service
check_command check_by_ssh!nasadmin!"./quotasNum"
}
blog comments powered by Disqus