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.pod
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 sysadmin@domain.tld -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

There are no comments.

Leave a Reply