English sum-up :
Here is my recently coded Nagios compatible XtremIO supervision scripts. These scripts are a first step to a complete set of monitoring scripts for the EMC AFA. A forthcoming v2 version will be out in few days/weeks.
Vous le savez sans doute si vous me suivez depuis quelques semaines déjà, nos sommes désormais en production sur nos deux AFA XtremIO. Afin de pouvoir effectuer une supervision de premier niveau (hardware principalement) sur ces machines, j’ai donc développé deux petits scripts shell, compatibles Nagios, permettant de checker régulièrement les baies à la recherche de problèmes hardwares éventuels. Je vous les livre en “version 1” sachant que je vais travailler d’ici quelques jours sur une version 2 du kit de supervision disposant de scripts complémentaires pour afiner encore le monitoring.
Les deux scripts font appel à un fichier “include” où se trouvent les credentials et le hostname de la baie à interroger. Si vous avez plus d’une baie, il vous faudra dupliquer ces scripts avec des paramètres diffrents (en attendant la V2) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#! /bin/bash DEBUG=no ARRAY=fqdn.tld.com USERNAME=admin PASSWORD=***AdminPWD*** xio_getxml() { if [ "$DEBUG" = "yes" ]; then echo "ARRAY=${ARRAY}" echo "USERNAME=${USERNAME}" echo "PASSWORD=${PASSWORD}" echo "REQ=${1}" echo "curl -sk \"https://${USERNAME}:${PASSWORD}@${ARRAY}/api/json/${1}\"" fi curl -sk "https://${USERNAME}:${PASSWORD}@${ARRAY}/api/json/${1}" } |
Le premier script s’occupe de checker l’ensemble des composants hardwares de chaque contrôleur. Si un (ou plusieurs) composants sont défaillants, le script renvoie la liste des composants en question et leur niveau d’alerte :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#! /bin/bash # if [ "$0" = "basename $0" ]; then INC="./xtremio_include.sh" else REP=`dirname $0` INC=$REP/xtremio_include.sh fi . $INC if [ "$1" = "" ]; then echo "USAGE : $0 <ctrlnum>" echo "ctrlnum : numero du controleur a interroger" echo echo "Renvoie l'etat general hardware du controleur specifie, au format de sortie NAGIOS" exit 3 fi # test numerique pour argument ctrlnum CTRLNUM=$(( $1 + 1 - 1)) if [ $CTRLNUM -eq 0 ]; then echo "Argument ctrlnum invalide, valeurs numeriques uniquement... 1, 2, 3 etc. ..." exit 3 fi # Check des controleurs. Il y a de base 11 indicateurs d'etat dans le retour de la commande "types/storage-controllers/x" # on les check un par un ... RC=0 STR="" CHECKLIST="dimm-health-state sas1-hba-port-health-level current-health-state internal-sensor-health-state temperature-health-state ib2-link-health-level sas2-hba-port-health-level ib1-link-health-level fan-health-state voltage-health-state mgmt-link-health-level" for check in $CHECKLIST; do VAL=`xio_getxml types/storage-controllers/${CTRLNUM} | grep "${check}" | awk '{ print $2 }' | tr -d "\",:"` if [ "$VAL" != "level_1_clear" ]; then STR="$STR ${check}=${VAL}" if [ "$VAL" = "level_4_minor" ]; then RC=1 else RC=2 fi fi done if [ $RC -eq 0 ]; then RCSTR="Controleur $CTRLNUM OK. Aucune erreur hardware" else RCSTR="Erreur(s) CTRL $CTRLNUM : $STR" fi echo -n $RCSTR exit $RC |
Rappelez-vous que le script renvoie une sortie “au format NAGIOS”, c’est à dire une seule ligne de texte et un return code correspondant au niveau de criticité global du check : 0 = tout va bien, 1 = certains composants sont en warning, 2 = certains composants sont en erreur, 3 = état inconnu. Pour superviser un XBrick complet, vous devez créer deux check sous Nagios, un pour chaque contrôleur. Par défaut avec 1 XBrick, vous disposez de deux contrôleurs numérotés 1 et 2. S’il y a 2 XBricks, vous avez quatres contrôleurs 1,2,3,4 etc. …
Le second script s’occupe de vérifier l’état des groupes de protections XDP (les “paquets” de 20 SSD de vos XBricks) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#! /bin/bash # if [ "$0" = "basename $0" ]; then INC="./xtremio_include.sh" else REP=`dirname $0` INC=$REP/xtremio_include.sh fi . $INC if [ "$1" = "" ]; then echo "USAGE : $0 <dpgnum>" echo "dpgnum : numero du data protection group XDP a tester" echo echo "Renvoie l'etat general de l'ensemble XDP specifie, au format de sortie NAGIOS" exit 3 fi # test numerique pour argument ctrlnum DPGNUM=$(( $1 + 1 - 1 )) if [ $DPGNUM -eq 0 ]; then echo "Argument dpgnum invalide, valeurs numeriques uniquement... 1, 2, 3 etc. ..." exit 3 fi SEV=`xio_getxml types/data-protection-groups/${DPGNUM} | grep obj-severity | awk '{ print $2 }' | tr -d "\":," ` echo $SEV | grep "information" >/dev/null if [ $? -eq 0 ]; then RCSTR="Data protection group $DPGNUM OK, mode nomminal" RC=0 else RCSTR="Severite du DPG : $SEV, check XMS !" RC=2 fi echo -n $RCSTR exit $RC |
Comme pour les contrôleurs, si vous n’avez qu’un XBrick, vous n’avez donc qu’un seul groupe de protection numéroté “1”. Si vous disposez de 2 XBricks, vous avez deux groupes de protection 1 et 2 etc. …
J’espère que ces petits bouts de code vous aiderons à démarrer une activité de supervision de premier niveau sur vos XtremIO.
Merci pour vos retours éventuels !
Script is not working. Too bad there is no second version as mentioned.
Yeap, sorry for not updating the downloadable scripts. We are currently working running on a new version. I’ll keep you informed of the progress as soon as possible.
Cédric
Cédric,
Any news about the updated version? Would be really nice to get the monitoring of our xtremio working with Nagios!
I’m working on it. Thanks for your patience.
Cédric,
Please let me know if you want me to test your script and give some input.
Cédric,
Still no news?
Cédric,
Would be nice to see a statusupdate.
Salut,
Tu aurais encore d’autres script pour l’xtremio ? Tu en aurais aussi pour recoverpoint et appsync ?
Merci