hiding-1209131_640

Montre moi tes logs, je te dirai qui tu es.

Cet article a été rédigé pour être compris par la majorité des lecteurs de ce blog. N’hésitez pas à utiliser les commentaires pour toutes questions techniques ou autres.

Qu’est-ce que c’est ?

Pour commencer cet article, expliquons brièvement et de façon intelligible ce que sont les logs et leurs utilités. Étant donné que nous allons travailler sur les logs d’accès serveur, nous prendrons comme exemple tout au long de cet article les logs d’Apache.

Visiteurs

Les logs sont des fichiers localisés sur le serveur des sites internet, et ils contiennent l’historique des pages vues.

Imaginons que vous décidez d’acheter un module Prestashop pour votre boutique internet : http://addons.prestashop.com/fr/places-de-marche/2501-amazon-market-place.html lorsque vous arrivez sur le site, le log enregistre votre passage, en mentionnant votre IP, votre navigateur, l’heure de la visite, etc. Si vous cliquez sur « ajouter au panier », il inscrit une nouvelle entrée sur le fichier de log. A chaque chargement de page, le serveur apache envoie aussi son statut. Est-elle accessible ? Existe-t-elle toujours ? Est-elle en erreur … Chacun de ces statuts génère un code :

  • 2xx Success
  • 4xx Erreur du client
  • 3xx Redirection
  • 5xx Erreur de serveur

referencement Montre moi tes logs, je te dirai qui tu es.

goaccess1 390x170 Montre moi tes logs, je te dirai qui tu es.

Donc si vous avez bien suivi, à chaque fois que quelqu’un visite votre site, nous avons, sans avoir besoin d’utiliser un service tel que Google Analytics ou autre, un historique du trafic réel sur le site. Selon la configuration du serveur , nous avons généralement entre 3 et 30 jours d’historique.

Robot (Crawler)

Il n’y a pas que les humains qui parcourent votre site, il y a aussi les robots appelés Crawlers. Ces robots plus ou moins légitimes parcourent votre site pour indexer son contenu dans les moteurs de recherche. Ils suivent bêtement (ou presque) les liens présents sur le site. Ils vont donc aussi laisser leur trace et s’ils sont polis, ils vont se présenter.

Les logs vont nous permettre d’avoir un état très précis de l’activité.

Exploitation des données

Il y a des dizaines de possibilités d’utilisation de ces logs et je vais vous en présenter 2 que nous utilisons régulièrement dans notre agence de Bayonne.

Trouver les erreurs

Google Search Console ne montre qu’une partie des erreurs présentes sur le serveur. En regardant dans les logs, vous aurez beaucoup plus d’informations sur ces erreurs. C’est relativement précieux et cela vous permet à la fois de découvrir quelles sont les erreurs vues par vos clients, et celles vues par Google. Il est important de ne pas avoir d’erreurs car celles-ci  peuvent pénaliser à la fois votre référencement et vos visiteurs ! Il est habituel de trouver des erreurs 404 par exemple sur des prestashop. Cette erreur indique que la page est indisponible. Par exemple si un produit n’existe plus, il est préférable de renvoyer une erreur 410 ou pourquoi pas les redirigés ? C’est au cas par cas.

Référencement

Ces logs ont aussi un réel avantage, ils vous permettent de découvrir le comportement de Google et les pages qu’il visite le plus. Ces pages généralement sont vos pages les mieux appréciés par le moteur, et il faut les travailler intelligemment pour exploiter correctement leur jus. Nous nous étendrons plus sur le sujet dans un prochain article.

Vous comprenez donc maintenant l’importance de l’exploitation des logs.

Génération de statistiques

Il existe plusieurs solutions pour exploiter les logs et nous allons vous présenter la solution que nous utilisons. Pour la démonstration, nous travaillons sur Ubuntu 16,04 installé sur un VM Vagrant et nous vous présenterons l’aperçu des stats de l’agence de Bayonne.
goaccess2 390x170 Montre moi tes logs, je te dirai qui tu es.
La première étape consiste à installer goaccess, rien de très original.

$ echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
$ wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install goaccess

Un goaccess man vous présentera l’ensemble des options.
Ensuite, nous allons récupérer l’ensemble des access logs de votre site. Logiquement, vous en aurez plusieurs. Nous vous conseillons d’en faire un seul avec cette commande :

cat netick.fr_access_log netick.fr_access_log.1 netick.fr_access_log.2 netick.fr_access_log.3 netick.fr_access_log.4 netick.fr_access_log.5 netick.fr_access_log.6 > biglog.log

Une fois le fichier log prêt, il ne nous reste plus qu’à lancer la commande qui va générer le rapport HTML : goaccess -f biglog.log -a -o report.html

Ce premier rapport n’est pas hyper exploitable, car il comptabilise l’ensemble des visites, même celles réalisées par les robots. Donc pour avoir un rapport un peu plus proche de la réalité, nous allons retirer les crawlers.

sed -i.bak '/internal dummy/d' biglog.log
sed -i.bak '/baidu.com/d' biglog.log
sed -i.bak '/Googlebot/d' biglog.log
sed -i.bak '/bingbot/d' biglog.log
sed -i.bak '/ahrefs/d' biglog.log
sed -i.bak '/phpservermonitor/d' biglog.log
sed -i.bak '/yandex/d' biglog.log
sed -i.bak '/semrush/d' biglog.log
sed -i.bak '/majestic/d' biglog.log
sed -i.bak '/exabot/d' biglog.log
sed -i.bak '/mj12bot/d' biglog.log
sed -i.bak '/msnbot/d' biglog.log
sed -i.bak '/webmeup/d' biglog.log
sed -i.bak '/napoveda/d' biglog.log
sed -i.bak '/deusu/d' biglog.log
sed -i.bak '/orangebot/d' biglog.log
sed -i.bak '/Gigabot/d' biglog.log
sed -i.bak '/searchmetrics/d' biglog.log
sed -i.bak '/safedns/d' biglog.log
sed -i.bak '/Twitterbot/d' biglog.log
sed -i.bak '/MixrankBot/d' biglog.log
sed -i.bak '/crawler/d' biglog.log
sed -i.bak '/Google/d' biglog.log
sed -i.bak '/Slurp/d' biglog.log
sed -i.bak '/facebookexternalhit/d' biglog.log
sed -i.bak '/SEOkicks/d' biglog.log
sed -i.bak '/WBSearchBot/d' biglog.log
sed -i.bak '/Wotbox/d' biglog.log
sed -i.bak '/Java/d' biglog.log
sed -i.bak '/GoogleImageProxy/d' biglog.log
sed -i.bak '/python/d' biglog.log
sed -i.bak '/libwww/d' biglog.log
sed -i.bak '/DotBot/d' biglog.log
sed -i.bak '/WordPress/d' biglog.log
sed -i.bak '/AddThis/d' biglog.log
sed -i.bak '/ichiro/d' biglog.log
sed -i.bak '/WBSearchBot/d' biglog.log
sed -i.bak '/Sogou/d' biglog.log
sed -i.bak '/YisouSpider/d' biglog.log
sed -i.bak '/Python/d' biglog.log
sed -i.bak '/CCBot/d' biglog.log
sed -i.bak '/ia_archiver/d' biglog.log
sed -i.bak '/Slackbot/d' biglog.log
sed -i.bak '/Ruby/d' biglog.log
sed -i.bak '/Jakarta/d' biglog.log
sed -i.bak '/ruby/d' biglog.log
sed -i.bak '/Slack/d' biglog.log

Si on relance la commande goaccess -f biglog.log -a -o report.html, nous allons arriver à quelque chose de beaucoup plus proche de la réalité.

A l’inverse il peut être utile pour le référencement de visualiser uniquement ce que Google est venu chercher sur votre site internet.

Pour cela il suffit de repartir du premier biglog.log, et d’utiliser ce script :
cat biglog.log | grep "Googlebot" > googlelog.log

Ce fichier contiendra l’ensemble des crawls de Google.

goaccess3 390x170 Montre moi tes logs, je te dirai qui tu es.

Pour finir en beauté, on peut aussi vouloir voir le parcours Google de la journée. Dans ce cas :

MOIS_q=$(date +"%m")
Jour_q=$(date +"%d")
if [ "$MOIS_q" = "01" ]
then
MOIS=Jan;
fi
if [ "$MOIS_q" = "02" ]
then
MOIS=Feb;
fi
if [ "$MOIS_q" = "03" ]
then
MOIS=Mar;
fi
if [ "$MOIS_q" = "04" ]
then
MOIS=Apr;
fi
if [ "$MOIS_q" = "05" ]
then
MOIS=May;
fi
if [ "$MOIS_q" = "06" ]
then
MOIS=Jun;
fi
if [ "$MOIS_q" = "07" ]
then
MOIS=Jul;
fi
if [ "$MOIS_q" = "08" ]
then
MOIS=Aug;
fi
if [ "$MOIS_q" = "09" ]
then
MOIS=Sep;
fi
if [ "$MOIS_q" = "10" ]
then
MOIS=Oct;
fi
if [ "$MOIS_q" = "11" ]
then
MOIS=Nov;
fi
if [ "$MOIS_q" = "12" ]
then
MOIS=Dec;
fi

today= »$Jour_q/$MOIS »;

cat googlelog.log | grep « $today » > googletoday.log
goaccess -f googletoday.log -a -o googletoday.html

Conclusion

Il suffit parfois de pas grand chose pour faire la différence alors n’hésitez pas à tester goaccess qui est gratuit et fiable ….

new piktochart 19319847 399b33d757ada4fa1ea78f37f9a79115d1205c91 Montre moi tes logs, je te dirai qui tu es.