Que faire si une application plante et qu’on ne peut pas intervenir sur le serveur (Vacance, pas de net, etc).
Je vais proposer une solution de monitoring d’application, qui la relance automatiquement si elle a planté.
Il faut absolument pour que ca fonctionne que l’application est créé un fichier avec son PID dedans.
Un petit tours dans le dossier « /var/run/ » :
drwxr-xr-x 2 root root 4096 oct 31 2009 apache2
-rw-r--r-- 1 root root 5 jui 25 06:25 apache2.pid
drwxr-xr-x 3 root root 4096 fév 9 2009 bind
-rw-r--r-- 1 root root 5 jun 3 16:21 crond.pid
---------- 1 root root 0 jun 3 16:21 crond.reboot
drwxr-xr-x 2 root root 4096 jun 3 19:29 mdadm
-rw-r--r-- 1 root root 98 jun 3 16:21 motd
drwxr-xr-x 2 munin root 4096 jui 30 00:35 munin
drwxr-xr-x 2 mysql root 4096 jun 3 19:34 mysqld
drwxr-xr-x 2 root root 4096 jun 3 16:20 network
-rw-r--r-- 1 root root 4 jun 3 19:29 ntpd.pid
-rw-r--r-- 1 root root 5 jun 3 16:21 rsyslogd.pid
drwxrwxr-x 3 root utmp 4096 oct 31 2009 screen
drwxr-xr-x 2 root root 4096 jan 14 2009 sshd
-rw-r--r-- 1 root root 5 jun 3 16:21 sshd.pid
-rw-rw-r-- 1 root utmp 4608 jui 30 00:32 utmp
Je vais prendre par exemple « sshd.pid » donc le PID du serveur.
Même si je n’est jamais vue un sshd planter, si cela arrive c’est plutôt embarrassant.
Déjà je vais voir ce qu’il y a dans ce fichier :
#cat /var/run/sshd.pid
4330
Je connais maintenant le PID de mon sshd.
un petit tour du coté de ps:
# ps aux | grep sshd
root 4330 0.0 0.0 48860 1208 ? Ss Jun03 0:03 /usr/sbin/sshd
Je retrouve bien mon PID « 4330 » qu’il y avais dans le fichier « /var/run/sshd.pid », me voila soulagé mon sshd tourne.
Question: Maintenant comment surveillé en permanence que le processus est bien présent ?
Réponse: un script qui ce lance périodiquement et qui va vérifier tout ca. Si il détecte que le processus est mort il le relance.
#!/bin/sh
PID_FILE='/var/run/sshd.pid'
PID=`cat $PID_FILE`
#On test si le PID existe
PROCESS=`ps --pid $PID`
if[ $? == 1 -o ! -f $PID_FILE ]; then
echo "OUPSS le processus n'existe plus"
RET=`/etc/init.d/sshd start 2>&1` #On relance le processus
#on s'envoie un petit mail avec le retour de la commande
#de relance du processus
echo "SSHD is down.n $RET" | mail [email protected] -s "SSHD Error"
else
echo "Tous va bien :)"
fi
C’est un script très simple!
Il suffit de l’exécuter périodiquement avec un CRON.
* * * * * /root/monitoring/check-sshd.sh 2>&1 1>/dev/null
@Bientôt