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.

Capturer les mails en local avec FakeEmail

FakeEmail pour quoi faire ?

FakeEmail est un programme en Python qui va vous permettre de lire les mails envoyés par vos applications sans qu'ils sortent de la plate-forme de test. Tel un bouchon, il vous évitera d'inonder les boites mails de potentiels utilisateurs issus d'une base client.
Si vous n'êtes pas développeur, FakeEmail peut également vous servir à lire facilement les mails des applications installées sur votre machine sans avoir à configurer un serveur de mails.

Installation

Par Pip

  • pip install fakeemail

Sur Windows, cette commande est à lancer depuis l'invite de commande.

Par Github

  • Récupérer le dépôt Git de FakeEmail
    • git clone https://github.com/tomwardill/FakeEmail
  • Lancez l'installation (vous devez être root)
    • sudo python setup.py install

Erreur possible

twisted/runner/portmap.c:10:20: fatal error: Python.h: No such file or directory

Il doit vous manquer les paquets build-essential et/ou python-dev, l'exécution de la commande ci-dessous devrait résoudre le problème :
sudo apt-get install build-essential python-dev

Lancer FakeEmail

Manuellement :

fakeemail <port_smtp> <port_consultation_web> <interface_web_d_ecoute>

Exemple où je vais lancer fakeemail pour écouter le port 25 et être accessible via mon navigateur par le port 8080 (http://localhost:8080) :

fakeemail 25 8080 0.0.0.0

Erreur possible

twisted.internet.error.CannotListenError: Couldn't listen on any:25: [Errno 98] Address already in use.

Le système vous signale que le port 25, utilisé par défaut pour le protocole SMTP, est déjà utilisé. Plusieurs options s'offrent à vous :

- Utiliser un autre port que le port standard à l'aide de la commande suivante (ne pas oublier de configurer les services devant envoyer les mails sur ce nouveau port) :

fakeemail 2025 8082 0.0.0.0

- Arrêter le service utilisant le port 25

Pour savoir quel est le processus utilisant ce port : sudo netstat -plntu | grep 25 (la réponse se trouve à la fin de la ligne, après le /, j'ai rencontré sendmail et exim4)

Arrêter le service en question (remplacez sendmail par le service que vous avez trouvé précédemment) :

sudo service sendmail stop

 

Capture d'écran de l'interface

fakeemail

Assez sommaire, vous en conviendrez

 

Lien utile :