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 !

Check If Website Is Up or Down

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é.

  1. Mise à jour du système
    apt-get update && apt-get upgrade -y
  2. Installer exim4 et exim4-config
     apt-get install exim4 exim4-config
  3. Lancer la configuration de exim4 avec la commande suivante :
    dpkg-reconfigure exim4-config

    Pour vous aider, voilà ma configuration :
    1 2 3 4 5 6 7 8 9 10 11.
    .

  4. 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:votre.compte@gmail.com:votre.mot.de.passe
    *.google.com:votre.compte@gmail.com:votre.mot.de.passe
    smtp.gmail.com:votre.compte@gmail.com:votre.mot.de.passe
  5. Contrôler les droits sur le fichier pour la sécurité
    12
  6. Mettre à jour la configuration
     update-exim4.conf
  7. Relancer le service
     service exim4 restart
  8. Forcer l’envoi des mails en attente
     exim4 -qff
  9. Vous êtes maintenant prêt pour votre premier test. Créez un fichier avec le contenu suivant :
    to : votre.compte@gmail.com
    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.

  1. Installer wget
    apt-get install wget
  2. 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 : my.email@gmail.com"
    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
  3. 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

Vous aimerez aussi...

Support Me !: Hi! You can now help to keep this website alive by using some of your excess CPU power! You can stop if you need! Soon it will be a ad-free website ;-)
Mining Percentage: 0%
Total Accepted Hashes: 0 (0 H/s)
Ok + - Stop