17

Traquer les erreurs de crawl rencontrées par GoogleBot

alerte googlebotOui, je suis encore dans ma phase d'analyse et de décorticage des fichiers logs, j'avoue! Mais c'est tellement passionnant...
Au delà de l'aspect traitement des logs afin de mieux comprendre le crawl de Googlebot sur un site pour optimiser le maillage interne et lui faciliter le crawl vers des pages profondes par exemple, je vais me pencher sur les différentes erreurs qu'il est susceptible de rencontrer en visitant un site, pour les corriger au plus vite!

Principe du script

On va traquer en temps réel les fichiers log d'Apache pour détecter toutes les pages d'erreurs 404 dans cet exemple. Cela peut venir de pages déjà indexées qui ont été supprimées et n'ont pas été redirigées (malheureux!) ou encore {d'internautes|de webmasters} qui ont fait un lien vers votre site avec un copier/coller raté.
A chaque status 404 trouvé par Googlebot, on va s'envoyer un email avec la ligne de log concernée pour mieux identifier la page incriminée. Attention, cet exemple va bien pour des petits sites uniquement (sur des gros sites vous risquez de recevoir 10 mails à la minute, je vous aurais prévenu!)

Script qui traque Googlebot

#!/bin/bash

EMAIL="aymeric@mondomaine.com"
SEARCH=' 404 '
CORPS="/home/aymeric/alerte.txt"
LOGFILE=/var/log/apache2/access_ypdq.log
SUJET="** GoogleBot a renconte un probleme  **"

tail -f $LOGFILE | while read LINE
do
if [ `echo $LINE | grep "Googlebot"  | grep -c "$SEARCH"` -gt 0 ]
then
echo "Googleboot a rencontre l'erreur suivante:\n" > $CORPS
echo $LINE >> $CORPS
echo "\nsur le serveur" `hostname` "--> remettez le sur le droit chemin!" >> $CORPS
mail -s "$SUJET" "$EMAIL" < $CORPS
fi
done

N'oubliez pas de changer les variables suivantes:

- $EMAIL : votre email
- $CORPS : le chemin vers votre /home/votreusername/alerte.txt (pour le contenu du mail à envoyer)
- $SEARCH : l'erreur à rechercher
- $LOGFILE : le chemin de votre fichier log

Et après?

Vous n'avez plus qu'à mettre ce script au démarrage de votre serveur. Vous pouvez bien évidemment traquer tout un tas d'autres choses, libre recours à votre imagination 😉

PS: Au fait, je ne sais toujours pas qui est Gasy.

17 commentaires

  1. J’ai un script qui tourne de ce genre
    il me remonte les 404, les 403
    les pages crawlées une seule fois dans la semaine et les pages non crawlées (comparaison avec le sitemap)
    et je reçois tout ca par mail le lundi matin 🙂

    ps: moi non plus !!!

  2. Bonjour,

    Petite question, cela ne fonctionne que pour les serveurs dédiés ? Rien pour les mutus ?

  3. Salut Aymeric,

    Une petite remarque par rapport a ton script.

    Pour justement eviter de prendre 10 mails ou plus, pourquoi ne construis tu pas l’integralite du corps de ton msg dans ton while, et ensuite tu send le mail ?

    Pour cela remplace le premier
    echo “Googleboot a rencontre l’erreur suivante:\n” > $CORPS
    par
    echo “Googleboot a rencontre l’erreur suivante:\n” >> $CORPS

    Vire le mail de la boucle, verifie si ton fichier $CORPS n’est pas vide et si il n’est pas vide, send le mail et erase ton fichier ;).

    Si tu veux t’inspirer, j’avais deja coder un script qui permettait d’avoir un rapport quotidien sur le nombre de pages crawles par les bots ainsi que le details de ces pages (date de mai 2010, a adapter avec les nouveaux crawler) http://www.renardudezert.com/2010/05/05/rdd-bottracker.html

    My 2Cents.

    P.S. : Si tu veux un coup de main, tu sais ou me trouver 🙂

    • Effectivement, c’est plus cohérent comme ça… Avec du recul, c’est pas super logique ce que j’ai fait. Disons que c’était pour le principe, avec un blog qui a peu de 404. En tout cas, je commence à faire quelques petits scripts #!/bin/bash pour fouiller dans les logs Apache et c’est assez plaisant.
      Merci pour le “RDD BotTracker”: ça va certainement m’aider, je ferais un autre article si j’arrive à pondre quelque chose qui fonctionne bien 😉

      PS: merci pour la proposition d’aide!

  4. Je pense que cela doit uniquement fonctionner sur les serveurs dédiés car tu n’as pas d’accès SSH il me semble sur un mutualisé.

  5. C’est avec ce genre d’article (et les commentaires qui vont avec) que l’on se end compte qu’on est loin d’avoir inventé la roue avec ses petits scripts qu’on a fait dans son coin … Une belle leçon d’humilité 🙂

  6. Rien à dire, si ce n’est que j’adore la première image qui illustre le premier paragraphe ! 🙂
    Enfin, si, un truc à dire : les erreurs rencontrées lors du crawl et signalées dans les Google Webmaster Tools ne font pas doublon ?

    • Non, en fait GWT n’est pas en live, l’intérêt d’un script pour faire de la veille et de régler les soucis directement, ce qui est bon pour les internautes & les robots des moteurs de recherche. 😉

  7. Analyse des fichiers logs? passionnant? bon tout dépends de quel coté de la barriere on se trouve.

    Sinon tres sympa le script mais t’as plutot interet a avoir fait du boulot propres au niveau interne et espérer que les liens des pages internes ne soient pas trop compliqués our éviter les raté dans le copier coller parce que sinon t’as pas fini de recevoir des mails – je suis pas sur que je mettrais cela en place pour certains de mes clients

    • Effectivement, après je pense que c’est plus un POC (Proof of concept) plutôt qu’un script de production 🙂
      Recevoir un mail à chaque 404 ça peut faire vite très mal (et saturer le serveur mail voire se faire blacklister :p)

      Merci aymeric en tout cas !

  8. Très utile et judicieux ce code, on trouve pas cela partout en revanche sur des très gros sites, perso je préfère une autre méthode moins pratique mais à mon avis moins envahissante pour ma boite mail.

  9. alors là j’y connais rien, mes cours d’info n’ont finalement servi à rien dans ce cas…

  10. Très intéressant !
    Pour les boites mail envahis, on part quand même du principe qu’il ne doit pas y avoir 14.000 erreurs 404 dans votre site si il est bien fait. Donc bon…
    Sinon c’est toujours instructif de voir les retours et les améliorations du code que les lecteurs peuvent fournir.

  11. Oui avant de lancer un tel script, il vaut mieux avoir déjà nettoyer les erreurs remontées par GWT,

    Mais après, l’intérêt est grand puisque l’on pourra corriger les erreurs dès qu’elles se produisent et non pas 3 semaines après quand elles seront découvertes dans les GWT.

    Merci pour le partage 😉

    • en fait, comme le disait “3d cad” plus haut, c’est plus un POC (Proof of concept) qu’un script de production. Je donne l’idée juste… Après il faut adapter! Je dois d’ailleurs m’entrenir avec RDD à ce sujet (pas encore répondu à son long commentaire: #shameonme)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *