J’ai un serveur apache tournant sous Debian hébergé chez OVH avec plusieurs sites internet.
Depuis plusieurs mois, entre 5 et 20 fois par jours, apache devient inaccessible pendant 30 à 60 secondes puis fonctionne de nouveau. Et donc pour nos clients, le site rame jusqu’à la fin de la coupure…
J’ai d’abord testé les autres services qui sont tous accessibles sans problème: SSH, FTP, mails. Concernant les logs apache, ils s’arrêtent littéralement pendant la coupure et rien n’y apparait.
Remarque : Avant d’exécuter le script pensez à changer les valeurs par défaut : exemple.com par votre nom de domaine et renseigner une adresse e-mail valide pour l’administrateur.
#!/bin/sh
# Script qui vérifie si Apache est toujours actif, si non
# ce script effectue les taches suivante:
# - il envoi par e-mail les dernières lignes des fichiers journaux
# - il redémarre apache
# -- Thomas, 2005/06/06
# -- SeeSoon, 2021/05/11
#-------------------------------------------------------------------
# Définition des varialbles par défaut
#-------------------------------------------------------------------
PATH=/bin:/usr/bin
THEDIR=/tmp/apache-watchdog
EMAIL=webmaster@example.com
mkdir -p $THEDIR
# ------------------------------------------------------------------
# Voir si apache est encore actif ou pas et cela pendant 10 secondes
# ------------------------------------------------------------------
if ( wget --timeout=10 -q -P $THEDIR https://www.example.com/robots.txt )
then
# Si apache est actif
touch ~/.apache-was-up
else
# apache non actif,
if [ -f ~/.apache-was-up ]
then
# rédiger un joli e-mail
echo -n "Apache s'est écrasé " > $THEDIR/mail
date >> $THEDIR/mail
echo >> $THEDIR/mail
echo "Access log:" >> $THEDIR/mail
tail -n 30 /var/log/apache2/access.log >> $THEDIR/mail
echo >> $THEDIR/mail
echo "Error log:" >> $THEDIR/mail
tail -n 30 /var/log/apache2/error.log >> $THEDIR/mail
echo >> $THEDIR/mail
# Redémarrer apache
echo "Maintenant donner un coup de pied à Apache..." >> $THEDIR/mail
/usr/sbin/apache2 -k stop >> $THEDIR/mail 2>&1
killall -9 apache2 >> $THEDIR/mail 2>&1
/usr/sbin/apache2 -k start >> $THEDIR/mail 2>&1
# Envoyer l'e-mail de notification pour avertir l'administrateur
echo >> $THEDIR/mail
echo "Bonne chance au dépannage!" >> $THEDIR/mail
mail -s "apache-watchdog: apache crashed" $EMAIL < $THEDIR/mail
rm /root/.apache-was-up
fi
fi
rm -rf $THEDIR
Merci de votez pour cet article :