Serveur MYSQL CLUSTER reportmemory.sh

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script de supervision (plugin compatible Nagios/Centreon)
Rôle Alerte sur le taux d'utilisation mémoire Data/Index d'un nœud NDB
Seuils Warning ≥ 80% · Critical ≥ 90%
Voir aussi Script cluster · my.cnf

Script de supervision qui interroge un nœud de données NDB (ndb_mgm ... report memory) pour connaître son taux d'utilisation mémoire (Data et Index), et retourne un code de sortie au format standard des plugins Nagios (repris tel quel par Centreon et la plupart des solutions de supervision compatibles) : 0=OK, 1=WARNING, 2=CRITICAL, 3=UNKNOWN.

Fonctionnement

  1. Lit l'identifiant du nœud NDB local depuis la ligne nodeid= de my.cnf.
  2. Exécute ndb_mgm -e "nodeid report memory" et capture la sortie.
  3. Extrait les pourcentages d'utilisation Data et Index.
  4. Compare aux seuils (80% = warning, 90% = critical) et retourne le code correspondant.

Script

#! /bin/bash
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4

STATE=$STATE_OK

# Warning >= 80
# Alert >= 90
WARNING=80
ALERT=90

configfile=/etc/my.cnf
temporaryfile=/tmp/reportmemory

nodeid=$(grep -m1 nodeid $configfile)
nodeid=${nodeid##*=}
nodeid=${nodeid%%,*}

ndb_mgm -e "$nodeid report memory" > $temporaryfile 2>/dev/null
if [ $? -ne 0 ]
then
	echo "Can't connect to manager!"
	exit $STATE_UNKNOWN
fi

index=$(cat $temporaryfile | grep Index| cut -d" " -f6)
index=${index%%\%*}
Data=$(cat $temporaryfile | grep Data| cut -d" " -f6)
Data=${Data%%\%*}


if [ $Data -ge $WARNING -o $index -ge $WARNING ]
then
	if [ $Data -ge $ALERT -o $index -ge $ALERT ]
	then
		STATE=$STATE_CRITICAL
		STATUS="Critical"
	else
		STATE=$STATE_WARNING
		STATUS="Warning"
	fi
fi


if [ ! $STATE = $STATE_OK ];then
	echo "$STATUS => Memory usage : Data = $Data%, Index = $index% "
fi

exit $STATE

Limites connues

  • Les seuils (WARNING/ALERT) sont codés en dur plutôt que passés en argument — une évolution possible serait de les rendre paramétrables (-w/-c), non modifiée ici pour rester fidèle au script d'origine.
  • En cas de fonctionnement STATE_OK, le script n'affiche aucun message (silencieux) ; seule la sortie non-OK produit une ligne — comportement à connaître si intégré tel quel dans un système affichant systématiquement le message du dernier check.
  • Dépend de la convention interne nodeid= dans my.cnf plutôt que d'un identifiant NDB standard — cf. la page my.cnf pour le détail de cette convention.

Voir aussi