Si vous constatez qu'un de vos service ne fonctionne pas correctement, vous n'êtes pas bloqué vous pouvez toujours vous connecter en tant qu'administrateur avec La console de gestion
Les commandes pour redémarrer les services sont :
Serveur WEB :
/etc/init.d/apache2 restart
Serveur Mail :
/etc/init.d/postfix restart
Serveur FTP :
/etc/init.d/start-ftp restart
Serveur MySQL :
/etc/init.d/mysql restart
Serveur DNS :
/etc/init.d/mydns restart
Vous pouvez créer un script de surveillance qui vérifie la disponibilité des différents services et qui les relance quand ils sont arrêtés.
Afin de lancer le Script tous les 5 minutes, nous allons créer une tâche Cron :
Lancez la commande :
crontab -e
Ajoutez la ligne :
*/5 * * * * /root/check-services.sh
Pour copier le script sur votre serveur (dans notre exemple, dans le répertoire root), vous pouvez utiliser un logiciel comme winscp. Ensuite vous devez rendre ce script exécutable :
chmod +x /root/check-services.sh
#!/bin/bash
#####################################################
#
# Ce script permet de surveiller l'etat des services suivants sur votre serveur VPS :
#
# 1. Service FTP : PureFTP
# 2. Service Mail : Postfix
# 3. Service Web : Apache2
# 4. Service SQl : MySQL
# 5. Service DNS : Mydns
#
# Si un service n'est pas actif, celui-ci sera redemarre et un mail de notification sera envoye.
#
######################################################
## Declaration et initialisation des varaibles
#######################
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
test_mail=0
heure=$(date | cut -f2 -d, | awk '{print $1}')
date=$(date | cut -f1 -d,)
## Indiquez l'adresse mail via laquelle vous desirez etre informe en cas de probleme
mail='postmaster@test.com'
## Indiquez si vous souhaitez activer la surveillance pour le service DNS (true : oui , false : non)
dns=false
## Par défaut les journaux de bords des différents services sont situes dans /var/log.
## Si vous avez modifie l'emplacement de ces fichiers, renseignez le chemin ici.
log_ftp='/var/log/syslog'
log_mail='/var/log/mail.log'
log_web='/var/log/apache2/error.log'
log_sql='/var/log/mysql.log'
log_dns='/var/log/syslog'
## Test des differents services
#######################
## FTP : PureFTP
ftp=$(ps aux |awk '{print $11}' |grep pure-ftpd |tail -n 1)
if [ -z "$ftp" ]
then
/etc/init.d/start-ftp start
## En cas d'échec du premier reboot, on fait deux nouveaux essais avant d'envoyer une notification.
test_ftp=0
while [ $test_ftp -ne '2' ]
do
ftp2=$(ps aux |awk '{print $11}' |grep pure-ftpd |tail -n 1)
if [ -z "$ftp2" ]
then
/etc/init.d/start-ftp start
test_ftp=$(($test_ftp+1))
rep_ftp=0
else
test_ftp=2
rep_ftp=1
fi
done
## Mail envoyé si le service a redémarrer du premier coup
if [ $rep_ftp -eq '1' ]
then
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur FTP à rencontré un problème. Celui-ci a été redemarré et fonctionne parfaitement" >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_ftp >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
## Mail envoyé si le service n'a pas redémarrer
else
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur FTP à rencontré un problème. Celui-ci n'est toujours pas actif après trois tentatives de redémarrage." >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_ftp >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
fi
test_mail=1
else
echo "PureFTP .... Running !" > /dev/null
fi
## Mail : Postfix
postfix=$(ps aux |awk '{print $11}' |grep /postfix/master |tail -n 1)
if [ -z "$postfix" ]
then
/etc/init.d/postfix start
## En cas d'échec du premier reboot, on fait deux nouveaux essais avant d'envoyer une notification.
test_mail=0
while [ $test_mail -ne '2' ]
do
postfix2=$(ps aux |awk '{print $11}' |grep postfix |tail -n 1)
if [ -z "$postfix2" ]
then
/etc/init.d/postfix start
test_mail=$(($test_mail+1))
rep_mail=0
else
test_mail=2
rep_mail=1
fi
done
## Mail envoyé si le service a redémarrer du premier coup
if [ $rep_mail -eq '1' ]
then
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur Mail à rencontré un problème. Celui-ci a été redemarré et fonctionne parfaitement" >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_mail >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
## Mail envoyé si le service n'a pas redémarrer
else
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur Mail à rencontré un problème. Celui-ci n'est toujours pas actif après trois tentatives de redémarrage." >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_mail >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
fi
test_mail=1
else
echo "Postfix .... Running !" > /dev/null
fi
## Web : Apache
apache=$(ps aux |awk '{print $11}' |grep apache |tail -n 1)
if [ -z "$apache" ]
then
/etc/init.d/apache2 start
## En cas d'échec du premier reboot, on fait deux nouveaux essais avant d'envoyer une notification.
test_web=0
while [ $test_web -ne '2' ]
do
apache2=$(ps aux |awk '{print $11}' |grep apache |tail -n 1)
if [ -z "$apache2" ]
then
/etc/init.d/apache2 start
test_web=$(($test_web+1))
rep_web=0
else
test_web=2
rep_web=1
fi
done
## Mail envoyé si le service a redémarrer du premier coup
if [ $rep_web -eq '1' ]
then
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur Web à rencontré un problème. Celui-ci a été redemarré et fonctionne parfaitement" >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_web >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
## Mail envoyé si le service n'a pas redémarrer
else
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur Web à rencontré un problème. Celui-ci n'est toujours pas actif après trois tentatives de redémarrage." >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_web >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
fi
test_mail=1
else
echo "Apache .... Running !" > /dev/null
fi
## SQL : MySQL
mysql=$(ps aux |awk '{print $11}' |grep mysql |tail -n 1)
if [ -z "$mysql" ]
then
/etc/init.d/mysql start
## En cas d'échec du premier reboot, on fait deux nouveaux essais avant d'envoyer une notification.
test_sql=0
while [ $test_sql -ne '2' ]
do
mysql2=$(ps aux |awk '{print $11}' |grep mysql |tail -n 1)
if [ -z "$mysql2" ]
then
/etc/init.d/mysql start
test_sql=$(($test_sql+1))
rep_sql=0
else
test_sql=2
rep_sql=1
fi
done
## Mail envoyé si le service a redémarrer du premier coup
if [ $rep_sql -eq '1' ]
then
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur SQL à rencontré un problème. Celui-ci a été redemarré et fonctionne parfaitement" >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_sql >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
## Mail envoyé si le service n'a pas redémarrer
else
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur SQL à rencontré un problème. Celui-ci n'est toujours pas actif après trois tentatives de redémarrage." >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_sql >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
fi
test_mail=1
else
echo "MySQL .... Running !" > /dev/null
fi
## DNS : MyDNS
if [ $dns = 'true' ]
then
dns=$(ps aux |awk '{print $11}' |grep mydns |tail -n 1)
if [ -z "$dns" ]
then
/etc/init.d/mydns start
## En cas d'échec du premier reboot, on fait deux nouveaux essais avant d'envoyer une notification.
test_dns=0
while [ $test_dns -ne '2' ]
do
dns2=$(ps aux |awk '{print $11}' |grep mydns |tail -n 1)
if [ -z "$dns2" ]
then
/etc/init.d/mydns start
test_dns=$(($test_dns+1))
rep_dns=0
else
test_dns=2
rep_dns=1
fi
done
## Mail envoyé si le service a redémarrer du premier coup
if [ $rep_dns -eq '1' ]
then
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur DNS à rencontré un problème. Celui-ci a été redemarré et fonctionne parfaitement" >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_dns >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
## Mail envoyé si le service n'a pas redémarrer
else
echo "" >> /root/.stat_serveur
echo "Le $date à $heure, votre serveur DNS à rencontré un problème. Celui-ci n'est toujours pas actif après trois tentatives de redémarrage." >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "Voici un extrait de log :" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
tail -n 20 $log_dns >>/root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "" >> /root/.stat_serveur
echo "---------------------------------------------------------------------------------" >> /root/.stat_serveur
fi
test_mail=1
else
echo "MyDNS .... Running !" > /dev/null
fi
fi
## Envoie du mail de notification
#######################
if [ $test_mail -eq '1' ]
then
mail -s "Notification status serveur LWS" $mail < /root/.stat_serveur
rm /root/.stat_serveur
fi
Keywords : ISP Config 3, gérer, état, services, journaux de bords, logfiles, status