Fichier checkMyServerIsRunning.sh
#!/bin/bash
# vers qui envoyer l'alerte ?
DIFFUSION=toto@yoyo.fr
# fichier ProcessId du serveur
PID_FILE=/appli/MyServer/MyServer.pid
# rapport d'alerte
CHECK_REPORT=/tmp/checkMyServer.log
# le serveur est-il actif O/N ? 1/0
SERVER_RUNNING=0
echo - RAPPORT $0 DU `date` - `hostname` >> ${CHECK_REPORT}
# si un fichier pid est present on teste la présence du processus
if [ -e "${PID_FILE}" ]
then
SERVERPID=`cat ${PID_FILE}`
MSGPID="PID is ${SERVERPID}"
SERVER_RUNNING=`ps xaf | grep ${SERVERPID} |grep -v grep|wc -l`
fi
if [ "${SERVER_RUNNING}" == "1" ]
then
# le serveur est actif on ne fait rien
echo server is running ${MSGPID} >> ${CHECK_REPORT}
exit
fi
echo server is not running ... so restart it >> ${CHECK_REPORT}
# redémarrage du serveur
/etc/init.d/myServer status >> ${CHECK_REPORT}
/etc/init.d/myServer start >> ${CHECK_REPORT}
# mail avec PJ avec mutt
echo FICHIERS DE LOG MODIFIES CE JOUR EN PJ >> ${CHECK_REPORT}
zip lesLogsDuJour.zip `find . -name "*.log" -mtime -1` >> ${CHECK_REPORT}
mutt -s "`hostname` : serveur MyServer" -a lesLogsDuJour.zip ${DIFFUSION} < ${CHECK_REPORT}
rm -f lesLogsDuJour.zip
# remise a zero du rapport
echo > ${CHECK_REPORT}
Explications :
Dans un premier temps on paramètre les hypothèses de départ (emplacement du serveur, des fichiers de rapport, des destinataires)
Ensuite on vérifie la présence du serveur en contrôlant la présence de son fichier ".pid" et en vérifiant la présence du processus correspondant.
Si le serveur est effectivement démarré, on ne fait rien (si ce n'est augmenter le rapport de surveillance).
Si le serveur n'est pas démarré (fichier pid absent ou processus absent) alors on le redémarre :
- on constitue une archive ZIP des fichiers de logs modifiés ce jour
- on envoie un email du rapport de surveillance à la liste des destinataires paramétrés
- on remet à zero le rapport de surveillance.
Tâche planifiée
La prochaine et dernière étape consiste à planifier une tâche toutes les heures pour lancer ce script.
Pour éditer la planification il faut exécuter la commande suivante :
crontab -e
Il faut ajouter les 2 lignes suivantes :
# verification de MyServer toutes les heures
0 * * * * cd /appli/MyServer && sh checkMyServerIsRunning.sh
Toutes remarques et/ou suggestions d'amélioration sont les bienvenues...
Aucun commentaire:
Enregistrer un commentaire