====== Check oco ====== oco (Ovh Check Out) est un petit serveur en perl "made in ovh", qui sert à sortir ou rentrer une machine d'une ip load balancing. ===== Installation ===== (cf. http://guides.ovh.net/Oco) cd /root wget ftp://ftp.ovh.net/made-in-ovh/oco/oco-ded.tar.gz -O oco-ded.tar.gz tar xf oco-ded.tar.gz cd oco-ded-1.15 ./install.sh # on vérifie telnet localhost 79 # normalement, ça répond KO (pas de http sur le host) mais ça répond cd /usr/local/oco/ # on vire le test par defaut mv bin/60sec/http bin/examples/ # et on met le notre touch bin/60sec/http chmod +x bin/60sec/http Ensuite, pour sortir une machine du cluster # sortie cluster, depuis le host echo 305 > /usr/local/oco/result/KOvolontaire # remise dans le cluster rm /usr/local/oco/result/KOvolontaire ===== Personnalisation ===== Par rapport au script "de base" livré avec oco, on peut personnaliser ses tests, par exemple : cd /usr/local/oco/ # on vire le test par defaut mv bin/60sec/http bin/examples/ # et on met le notre touch bin/60sec/http chmod +x bin/60sec/http Ce fichier bin/60sec/http contient par ex #!/bin/bash TMP=/tmp/http.oco # on met la liste des résultats considérés comme bon (on peux en mettre un seul) EXPECTED_RESULTS='truc1_OK truc2_OK truc3_OK' IPLB= OUT_VALUE=302 OUT_FILE=/usr/local/oco/result/$(basename $0) echo KO > $TMP wget http://${IPLB}/ -O $TMP > /dev/null 2>&1 for r in $EXPECTED_RESULTS do [ $r = $(<$TMP) ] && OUT_VALUE=200 # On a trouvé une valeur correcte done echo $OUT_VALUE > $OUT_FILE Il reste à coder ce que vous voulez tester (dans le langage que vous voulez) dans le script appellé par défaut sur http://${IPLB}/ ===== Monitoring ===== Pour vérifier le résultat d'oco, et remonter un mail d'alerte #!/bin/sh LOG=/tmp/$(basename $0).$(date '+%Y-%m-%d_%H') LOGOLD=/tmp/$(basename $0).$(date --date '1 hours ago' '+%Y-%m-%d_%H') DATE=$(date '+%Y-%m-%d_%H%M') # Les binaires TELNET=/usr/bin/telnet SED=/bin/sed MAIL=/usr/bin/mail MV=/bin/mv res=$(TELNET 127.0.0.1 79 2>/dev/null|$SED -nre '4 s/[0-9]+ ([OK]+).*/\1/p') if [ "$res" != "OK" ] then # Ce script est appelé fréquemment, on envoie un mail par heure max if [ ! -f $LOG ] then echo "Résultat d'un appel oco ($TELNET 127.0.0.1 79) :" > $LOG $TELNET 127.0.0.1 79 >> $LOG 2>&1 $MAIL -a "Content-Type: text/plain; charset=UTF-8" -s "$DATE OCO HS sur $(hostname)" root < $LOG else if [ -f $LOGOLD ] then echo -e "$DATE Le raid est rétabli sur $(hostname)" >> $LOGOLD $TWC info c0 >> $LOGOLD $MAIL -a "Content-Type: text/plain; charset=UTF-8" -s "$DATE RAID OK sur $(hostname)" root < $LOGOLD $MV $LOGOLD $LOGOLD.ok fi fi fi