Tym-Project

From: SUPINFO
To: Tous
Subject: IT

Monitorer Une Application Sous Linux

Il peut être très utile de vérifier l’état d’une application à intervalles réguliers : mon serveur de streaming est-il opérationnel, mon tunnel ssh est- il encore ouvert ?… Mais comment faire quand le service en question ne propose pas de moyen “natif” de vérifier ces infos ?

Pour ma part j’utilise un simple script bash et [man]crontab[/man] pour la planification. Dans l’exemple je vais vérifier que mon serveur de streaming fonctionne bien, soit quand vlc n’inscrit pas “video server down” dans son log (exemple tout à fait fictif) :

1
2
3
4
5
6
7
#!/bin/bash
VLC_LOG="/var/log/vlc.log"
ERROR_LOG="/var/log/vlc_error.log"

if tail -500 $VLC_LOG | grep 'video server down'; then
    echo "$date Server down" >> $LOG_FILE /home/tym/vlc_server/restart
fi

Ce script vérifie donc l’état du service en fonction du fichier journal. Si il détecte une erreur il peut (par exemple) redémarrer le service. Les possibilités sont quasi infinies (envoie de mail, connexion à un autre serveur…), la seule limitation est la capacité du service à créer un log suffisamment détaillé.

Pour le planifier, utilisez [man]crontab[/man] -e avec une ligne dans ce style :

*/1 * * * * /home/tym/scripts/check_vlc

Si vous voulez vérifier à un intervalle inférieur à 1 minute vous pouver modifier le script comme suit (et ne plus utiliser cron) :

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
VLC_LOG="/var/log/vlc.log"
ERROR_LOG="/var/log/vlc_error.log"
while :; do
    if tail -500 $VLC_LOG | grep 'video server down'; then
        echo "$date Server down" >> $LOG_FILE
        /home/tym/vlc_server/restart
    fi
    sleep 15
done

Bon monitoring ;-)

Comments