Raspberry Pi Home Server - Contrôler qu’un site web est toujours en ligne
Achtung : Dieser Artikel wurde automatisch von Bing Translate übersetzt
Advertencia : Este artículo ha sido traducido automáticamente por Bing Translate
Avec le changement d’hébergeur du deuxième blog de la maison, je n’ai pas eu que des compliments à la maison ! Des erreurs 500 et 504 à répétitions, des indisponibilités régulières. Bref, il fallait prendre les choses en main !
Le support de l’hébergeur me demandait uniquement « Quelle erreur ? A quelle heure exactement ? » (comme si bien sur il ne pouvait le trouver lui même dans les logs sur base d’une date et d’une URL mais bon …). « C’est à cause de WordPress monsieur ! »
J’ai donc décidé de mettre en place une surveillance, testant si le site répond et si ce n’est pas le cas, quelle est l’erreur.
La première étape consiste à installer sendmail et exim4 pour pouvoir envoyer l’alerte en cas d’indisponibilité du site qui va être surveillé.
- Mise à jour du système
apt-get update && apt-get upgrade -y
- Installer exim4 et exim4-config
apt-get install exim4 exim4-config
- Lancer la configuration de exim4 avec la commande suivante :
dpkg-reconfigure exim4-config
- Modifier le fichier avec vos informations Gmail
# password file used when the local exim is authenticating to a remote # host as a client. # # see exim4_passwd_client(5) for more documentation # # Example: ### target.mail.server.example:login:password gmail-smtp.l.google.com:[email protected]:votre.mot.de.passe *.google.com:[email protected]:votre.mot.de.passe smtp.gmail.com:[email protected]:votre.mot.de.passe
- Contrôler les droits sur le fichier pour la sécurité
- Mettre à jour la configuration
update-exim4.conf
- Relancer le service
service exim4 restart
- Forcer l’envoi des mails en attente
exim4 -qff
- Vous êtes maintenant prêt pour votre premier test. Créez un fichier avec le contenu suivant :
to : [email protected] from : Le nom de votre machine subject : Ceci est un test Votre premier envoi de mail
Pour l’envoi, rien de plus simple :
cat test | sendmail -t
Phase 2 : surveiller le site ! Pour cela, on va chercher la page d’accueil et on analyse le résultat.
- Installer wget
apt-get install wget
- Créer le script qui va surveiller votre site. Chez moi je l’ai appelé /root/check_website.sh
#!/bin/sh WEBSITE="www.my.website.fr" TIMEOUT=40 RETRIES=1 WAIT_RETRIES=5 RESULT="/tmp/website.result" TOSEND=0 MAIL="to : [email protected]" MAIL="$MAIL\nfrom : WebChecker" MAIL="$MAIL\nsubject : Website $WEBSITE\n" /usr/bin/wget "$WEBSITE" --timeout=$TIMEOUT --append-output=/var/log/check_website.log --tries=$RETRIES --output-document=$RESULT --waitretry=$WAIT_RETRIES RETVAL=$? if [ $RETVAL -eq 0 ]; then # Put here the list of messages that you want to monitor WORDS="500 Error;Internal Server Error;504 Gateway Time-out" export IFS=";" for WORD in $WORDS do TST=`grep $WORD $RESULT` RSLT=$? if [ $RSLT -eq 0 ]; then MAIL="$MAIL\n- Test of the word '$WORD' : OK" TOSEND=1 else MAIL="$MAIL\n- Test of the word '$WORD': Failed" fi done else TOSEND=1 MAIL="$MAIL\nTimeout (${TIMEOUT}s) of the wget command" fi MAIL="$MAIL\n\nDate : "`date` if [ $TOSEND -eq 1 ]; then echo $MAIL | sendmail -t fi
- Ajouter l’appel du script dans le fichier crontab. Pour ça, éditer le fichier avec la commande
crontab -e
Ajouter à la fin du fichier la ligne :
*/X * * * * /root/check_website.sh
Il faut remplacer X par la fréquence en minutes du contrôle. Moi j’ai mis 1 pour contrôler toutes les minutes (oui, je le redis, l’hébergeur est vraiment nul)
Sources :
- http://bernaerts.dyndns.org/linux/75-debian/278-debian-sendmail-gmail-account
- http://serverfault.com/questions/282215/script-to-automatically-test-if-a-web-site-is-available