GoAccess pour analyser ses logs Apache

Pourquoi utiliser GoAccess ?

Dans mon cas, je souhaite me débarrasser de Google Analytics dont je n'utilise qu'1% des fonctionnalités. Je cède à ce dernier beaucoup trop d'informations concernant les visiteurs de mes sites. L'idée était de continuer à connaître les pages les plus visitées, les erreurs rencontrées et une potentielle chute de fréquentation pouvant provenir d'un problème technique. Quoi de plus fiable que d'analyser des logs en remplacement d'un bout de JavaScript souvent bloqué par UBlock Origin ou Adblock Plus.

En résumé :

  • je donne moins d'informations à Google
  • j'évite le chargement d'un script externe à mes visiteurs
  • je peux quand même continuer à vérifier que tout va bien

La seule contrepartie dans mon cas étant la récupération des logs chez OVH que je pense automatiser dans la foulée.

goaccess-logo

Installation

Un paquet GoAccess est sûrement disponible pour votre distribution Linux ou vous pouvez le compiler depuis les sources. Je vous renvoie pour cela à la documentation d'installation.

Commandes

Dans les exemples suivants, j'utiliserais le fichier de log présent sur mon disque à l'emplacement /var/log/apache2/access.log.

Utilisation de base

goaccess -f /var/log/apache2/access.log

Ignorer les crawlers/bots/spiders avec l'option --ignore-crawlers

goaccess -f /var/log/apache2/access.log --ignore-crawlers

Lire des logs archivées

zcat /var/log/apache2/access.log*.gz | goaccess

Génération d'un rapport au format HTML

goaccess -f /var/log/apache2/access.log --ignore-crawlers -a -o report.html

GoAccess HTML report screenshot

Lancer un tableau de bord d'analyse en temps réel

goaccess -f /var/log/apache2/access.log -o /var/www/report.html --real-time-html

Remplacez /var/www/report.html par un endroit accessible par votre serveur web. Il ne vous restera plus qu'à accéder à ce dashboard via l'adresse https://<votre-domaine>/report.html.

Choisir le bon parseur pour Apache

Il se peut que la commande précédente n'apporte pas le résultat escompté. En effet, les logs peuvent être construits de nombreuses manières. Pour que GoAccess comprenne les données issues du fichiers que vous lui fournissez, utilisez l'option -c.

goaccess -f /var/log/apache2/access.log -c

Un menu va vous proposer les différents parseurs disponibles. Pour d'Apache, nous utiliserons le premier : NCSA Combined Log Format. Le deuxième, NCSA Combined Log Format with Virtual Host, est à sélectionner lors de l'utilisation de virtuals hosts.

Vous pouvez à tout moment éditer les règles de parsing avec les touches suivantes :

  • touche c pour modifier le format du log
  • touche d pour modifier la date
  • touche t pour le temps

Les différentes options disponibles pour ces expressions régulières sont disponible sous l'encart SPECIFIERS du manuel de GoAccess.

Extraire un dossier d’un dépôt Git existant en conservant son historique

Au cours de la vie d'un dépôt Git, il peut nous arriver de vouloir extraire un dossier sans perdre l'historique des commits concernant les fichiers se trouvent à l'intérieur. Que ce soit dans un soucis de mutualisation, d'un mauvais choix d'architecture au départ ou encore d'un changement dans notre gestion du dépôt.
Cette opération nécessite une version de Git supérieure ou égale à la 1.7.11.

logo de Git

  1. cd /chemin/base/depot/
  2. git subtree split -P chemin/relatif/dossier -b nomdelanouvellebranche
  3. mkdir /chemin/absolu/nouveaudossier && cd /chemin/absolu/nouveaudossier
  4. git init && git pull /chemin/base/depot/ nomdelanouvellebranche

La branche nomdelanouvellebranche ne contiendra que le dossier que vous souhaitez extraire.

Installer ou mettre à jour un WordPress en local sans FTP

Si vous gérez des blogs sous WordPress, les problèmes de mises à jour locales de la plate-forme et de ses plugins doivent vous être familiers. Pour les effectuer, le système par défaut requiert un serveur FTP sur la machine utilisée. Pour se passer de ce lourd pré-requis, il suffit d'ajouter (après les réglages MySQL par exemple) la ligne suivante au fichier wp-config.php :
define('FS_METHOD', 'direct');

Logo de WordPress

WordPress utilisera désormais le votre système de fichier et vous pourrez effectuer les mises à jour simplement.

J'en profite pour vous lister les arguments possibles. Dans mon cas, j'ai utilisé le premier, direct :

  • direct : pour utiliser directement le système de fichier,
  • ssh2 : pour forcer l'utilisation de l'extension PHP SSH si cette dernière est installée,
  • ftpext : pour utiliser l'extension PHP FTP si elle est installée, ou encore
  • ftpsockets : pour utiliser FTP à travers la classe PHP Sockets

Source : Editing wp-config.php - WordPress Codex

Suivez la création d’un jeu vidéo sur le Thimbleweed Park Development blog

Si les jeux vidéos vous intéressent et que vous êtes curieux de savoir comment ils sont construits, je vous invite à aller lire le blog du développement de Thimbleweed Park. Ce dernier a été kickstarté par 2 grands noms à l'origine du point & click Maniac Mansion. Au rythme d'au moins un billet par semaine, Ron Gilbert et Gary Winnick nous proposent de suivre leur aventure durant toute la durée de création (et même après à mon avis). Les sujets ne manquent pas : idées ajoutées ou supprimées, design, histoire, adoption d'outils de développement ou construction de nouveaux. Ron est plus axé sur le développement du jeu, le moteur, le gameplay. Gary, lui, est plus porté sur le design, l'animation ou l'écriture du scénario. Ces deux facettes complémentaires prennent la plume chacun leur tour pour nous permettre d'avoir une vision globale du processus de création.

Pour nous autres, simples consommateurs, c'est une belle opportunité d'en apprendre plus sur cet univers qui nous passionne. Ce blog est une étude de cas concrète sur la création d'un jeu vidéo par des professionnels aguerris.

Je leur souhaite bon courage et j'ai hâte de pouvoir jouer au produit fini.

Lien utile

BrowserSync, tester ses sites sur plusieurs navigateurs simultanément

BrowserSync est un outil basé sur Node.js qui permet de débuguer ses sites en même temps sur plusieurs navigateurs, simultanément sur des machines, plate-formes différentes. Il joue le rôle de proxy hyper-vitaminé entre le site et vos browsers. La version 2 est sortie il y a un peu moins d'un mois.

Fonctionnalités

  • Naviguer simultanément avec plusieurs navigateurs desktops ou mobiles sur un même site
  • Si un fichier CSS change, la page est rechargée sur tous les navigateurs
  • Synchronisation des clics et scrolls, remplissage des champs et validation de formulaires
  • Recharger la page sur tous les navigateurs
  • Avec Weinre, débuguer une page avec un seul et même outil proposant les fonctionnalités standards (navigation et éditions des éléments HTML/CSS/JS, accéder à la console, voir la timeline des chargements, les activités réseau...)
  • Avec Pesticide.io, afficher des informations en overlay sur les boites CSS en live sur la page
  • Simuler de la latence sur le chargement des pages

Installation

  • Pré-requis : Node.js et npm
  • npm install -g browser-sync

Démarrage

  • sudo browser-sync start --proxy "www.monsite.loc" --files "css/*.css"
browsersync-in-action-screenshot

BrowserSync en action sur un Firefox, un Chromium et un Firefox pour Android

 

La seule chose que je regrette, c'est que les changements effectués dans le DOM via Weinre ne soient pas répercutés sur toutes les fenêtres ouvertes et connectées à BrowserSync. J'ai ouvert une issue sur GitHub pour savoir s'il serait possible d'implémenter cette fonctionnalité.

Encore un bel outil à ajouter à sa trousse au plus vite, si ce n'est pas déjà fait.

Liens utiles