16

Analyser Googlebot via les logs Apache en temps réel

500 internal errorOn a beaucoup parlé au SEO Campus 2013 d'analyse de logs. Comprendre le fonctionnement de Googlebot, lui éviter des erreurs, mieux le guider via le linking interne peut permettre à votre site d'être Googlebot Compliant.
Je vais vous présenter une astuce dans la configuration d'Apache qui va vous permettre d'envoyer chaque hit serveur de Googlebot vers un programme externe en plus de l'habituel fichier de logs.

Le principe

Cela se passe directement au niveau de la configuration d'Apache, via la directive CustomLog: il s'agit des Piped Logs. C'est documenté et vous allez voir que c'est ultra pratique pour envoyer la sortie des lignes de logs en temps réel vers un programme externe.
Au lieu d'envoyer chaque ligne de log dans un fichier texte .log lors d'une requête sur votre serveur Apache, on va rediriger la sortie vers un {script|programme|application}.

Dans votre configuration d'Apache, il suffit d'ajouter un Pipe ( | ) juste devant le chemin d'un script à exécuter dans une directive CustomLog:

CustomLog "|/srv/data/web/vhosts/www.yapasdequoi.com/htdocs/trackbots/tracklogs.php" googlebot_format

On prendra soin de spécifier un format de log spécifique pour parser plus facilement la ligne de log:
LogFormat "%h|||%{Referer}i|||%{User-Agent}i|||%V|||%r|||%>s|||%D|||%H|||%t" googlebot_format

Pour ne pas que cela soit trop consommateur de ressources, vous pouvez déclencher le piped log et donc le script qui sera déclenché avec cette directive uniquement sous certaines conditions via les variables d'environnement dans votre fichier de configuration Apache:

SetEnvIf User-Agent "Googlebot/2.1" googlebot_log
CustomLog "|/srv/data/web/vhosts/www.yapasdequoi.com/htdocs/trackbots/tracklogs.php" googlebot_format env=googlebot_log

Et chaque ligne sera envoyée vers notre script tracklogs.php

Exemple d'utilisation en PHP

Vous pouvez l'utiliser pour gérer des alertes en cas d'erreurs spécifiques ou pour vérifier qu'une page est bien crawlée régulièrement. Personnellement, j'utilise les pipedlogs principalement pour déclencher l'appel de l'image de tracking de Google Analytics à chaque passage de GoogleBot, cela me permet de suivre son crawl directement dans GA, c'est gratuit et en temps réel, un kiff de geek de le voir se promener sur mes sites:-)

#!/usr/bin/php
<?php
$stdin = fopen("php://stdin", "r"); ob_implicit_flush (true); while
($line = fgets ($stdin)) {
$tmp = explode('|||', $line);
$ip = $tmp[0];
$referer = $tmp[1];
$userAgent = $tmp[2];
$hostName = $tmp[3];
$documentPath = $tmp[4];
$tmp2 = explode(" ", $documentPath);
$documentPath = $tmp2[1];
$url = $hostName . $documentPath;
$RES_CODE = $tmp[5];
trackapachelog($RES_CODE,$userAgent,$referer,$ip,$hostName,$documentPath);
}
?>

Il ne vous reste plus qu'à compléter la fonction trackapachelog, pour traiter les données comme bon vous semble.

Vos logs dans Google Docs

J'ai une vraie lubie pour Google Docs ces dernier temps, bien que Jérémy Allard m'a vraiment donné l'envie de me lancer dans la création de Plugins Chrome en tout genre lors du Teknseo, j'ai encore tellement de choses à exploiter avec Google Docs que je laisse les plugins pour plus tard:-)

Mon idée est de remonter dans une feuille de calcul sur Google Drive des infos en provenance des logs d'Apache, en live. Cela peut permettre d'afficher rapidement les dernières 404 par exemple sans pour autant se connecter en SSH et en ayant directement les données rangées dans un joli fichier.
Script à venir donc...

Merci à Jean-Benoit Moingt de m'avoir fait découvrir cette fonctionnalité, également utilisée dans la Watussi Box que je vous recommande pour mieux dompter GoogleBot. Special Dedicace à @dsampaolo avec qui on a causé logs au Teknseo😉

16 commentaires

  1. Très bon comme toujours 😉
    Les possibilités de Google Doc sont vraiment infini malheureusement pas assez de temps pour tout faire.
    D’ailleurs un analyseur de log via google doc c’est vraiment culotté je dirai tout comme le fait de scraper ces pages de résultats en utilisant ces propres outils 😀

    En tout cas j’aime ce spirit qui t’habite aymeric continue comme ça !!

    PS : petit coquille à la fin “erci à Jean-Benoit” t’a oublié le “M” 😉

  2. Encore un super script pour s’installer avec son seau de pop-corn devant les rapports pour pouvoir appliquer presque en temps réel les corrections si nécessaires ^^ Merci !
    Quant aux plugins de Jeremy, c’est vrai que tu n’arrêtais pas de poser des questions à son atelier, les premiers articles sur tes premiers développements ne devraient pas tarder…

  3. Voilà encore une belle bidouille.
    Ce qui m’épate est que tu keep it simple. C’est le plus dur.

  4. Aymeric, tu m’étonneras toujours 🙂 !
    Tes astuces sont toujours au top. Merci de les partager avec nous !

  5. Pas mal comme principe, mais je ne suis pas sur de voir l’intérêt du temps presque réel,
    je me suis toujours contenté d’un cron.
    Quel est l’avantage d’avoir les infos tout de suite ?

    • Parce qu’en cas de problèmes (404, 500, etc.) rencontrés par GoogleBot lors du crawl de ton site, tu peux entreprendre les actions nécessaire immédiatement, tout simplement

  6. Joli ! La configuration d’Apache pour envoyer les robots de Google sur un programme est une configuration de base de Watussi ou ça n’a rien à avoir ?
    Tu me fais penser que je dois tester Watussi pour voir ce que ça donne. J’ai vu de quoi il était capable au SEO Campus.

    Au cas ou Jean Besoin est dans les parages, peux-tu me dire quelle est la fréquence de mise à jours de Watussi Box ? La page de ‘tuto’ date de Janvier, tu n’as mis le tout sur git de façon à le cloner rapidement sur un dédié ?

    • Oui, c’est bien la config de base de Watussi, l’idée est de montrer comment ça fonctionne justement pour étendre les possibilités

    • Je suis dans les parages 🙂

      Pas de mise à jour depuis janvier, très peu de temps pour m’occuper de la version open source 😉

  7. Merci pour le partage, billet assez technique que je vais essayer de mettre en pratique, j’avasi déjà essayé la watussi box mais sur un mutu et le résultat était assez moyen donc a testé sur u dédié comme ton astuce.

    Au plaisir

  8. Well done! c’est du beau travail
    merci de nous avoir fait découvrir cette fonctionnalité

  9. Oula… c’est de l’art! J’utilise un simple cron, mais une révision s’impose 😉

Laisser un commentaire

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