Gérer l'état de mes services avec ISPConfig 3

Dans cette vidéo :

  • Vous apprendrez à visualiser l'état des différents services de votre VPS (journaux de bord, status des services, utilisation CPU/disque/RAM)

Pour aller plus loin

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

Depuis la console.

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

Script de surveillance des services.

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

Exemple de script

[télécharger]

  • N'oubliez pas de modifier l'adresse mail de contact en début de script.
#!/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

comment_gerer_l_etat_des_services_depuis_ispconfig_3.txt · Dernière modification: 2011/11/25 15:40 (modification externe)
Haut de page
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0