Vous en avez marre de Google Analytics qui espionne vos visiteurs ? Vous voulez des vraies stats sans JavaScript qui plombe vos pages ? GoAccess est là pour vous sauver ! Cet outil open-source analyse directement vos logs Apache/Nginx et vous balance des statistiques de fou directement dans votre terminal (ou en HTML si vous préférez).
🔍 Qu’est-ce que GoAccess ?
GoAccess est un analyseur de logs web ultra-rapide qui transforme vos fichiers de logs en rapports visuels interactifs. C’est l’outil parfait pour les devs qui aiment avoir le contrôle total de leurs données.
✅ Pourquoi GoAccess va vous plaire ?
- 🔒 Zero tracking : Vos données restent chez vous
- ⚡ Performance brutale : Parse des millions de lignes en quelques secondes
- 💰 Gratuit : Open-source, pas de vendor lock-in
- 📊 Complet : Visiteurs, pages, OS, navigateurs, géoloc, tout y est
- 🔄 Temps réel : Monitoring live de votre trafic
- 🤓 Hackable : Configuration ultra-flexible
🚀 Installation sur Ubuntu
Installation express pour les pressés :
# Mise à jour du système
sudo apt update
# Installation de GoAccess et des outils nécessaires
sudo apt install goaccess gzip
# Vérification de l'installation
goaccess --version
zcat --version
Pour avoir la dernière version avec toutes les features de hipster :
# Ajout du dépôt officiel
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 -
# Installation de la version récente
sudo apt update
sudo apt install goaccess
⚙️ Configuration
1. Édition du fichier de configuration
sudo nano /etc/goaccess/goaccess.conf
2. Configuration des formats obligatoires
Ajoutez ou modifiez ces lignes dans le fichier :
# 📅 Format de date et heure (OBLIGATOIRE)
time-format %H:%M:%S
date-format %d/%b/%Y
# 📊 Format de log Apache/Nginx (OBLIGATOIRE)
log-format %h %^ %^ [%d:%t %^] "%r" %s %O "%R" "%u"
3. Optimisations pour dev qui se respecte
# Ignorer les robots/crawlers (bye bye Googlebot)
ignore-crawlers true
# Afficher les vrais noms d'OS
real-os true
# Inclure méthodes et protocoles HTTP
http-method yes
http-protocol yes
# Désactiver les panneaux moins utiles
ignore-panel KEYPHRASES
ignore-panel REFERRERS
🎯 Commandes de base
Analyse simple et rapide
# Analyse d'un fichier de log
goaccess /var/log/apache2/access.log
# Avec tous les logs (actuels + archives)
sudo bash -c 'zcat /var/log/apache2/access.log.*.gz ; cat /var/log/apache2/access.log*' | goaccess -
📦 Note : La commande
zcat
fait partie du packagegzip
qui est normalement installé par défaut sur Ubuntu. Si elle n’est pas disponible, installez-la avec :sudo apt install gzip
Exemple concret : filtrer le traffic admin
Pour ceux qui utilisent… toussote… WordPress par flemme, voici comment exclure le bruit admin :
sudo bash -c 'zcat /var/log/apache2/access.log.*.gz ; cat /var/log/apache2/access.log /var/log/apache2/access.log.1' | grep -Ev "/wp-admin|/wp-login.php|/wp-cron.php|/xmlrpc.php" | sudo goaccess - --ignore-crawlers -ac
🔧 Décortiquons cette commande
Partie | Explication |
---|---|
bash -c | Exécute plusieurs commandes dans un seul shell |
zcat /var/log/apache2/access.log.*.gz | Lit les logs compressés (.gz) – nécessite le package gzip |
cat /var/log/apache2/access.log* | Lit les logs actuels et récents |
grep -Ev "/wp-admin|/wp-login.php..." | Exclut les pages d’administration (exemple avec WP) |
goaccess - | Analyse le flux de données |
--ignore-crawlers | Ignore les robots de référencement |
-a | Active la résolution DNS |
-c | Force l’affichage couleur |
💡 Créer des alias pour les fainéants
Plutôt que de retaper ces commandes de bourrin, créons des alias :
# Éditer votre profil bash
nano ~/.bashrc
# Ajouter à la fin du fichier :
alias logstats='sudo bash -c "zcat /var/log/apache2/access.log.*.gz ; cat /var/log/apache2/access.log*" | sudo goaccess - --ignore-crawlers -ac'
alias webstats='goaccess /var/log/apache2/access.log --ignore-crawlers -ac'
# Recharger la configuration
source ~/.bashrc
Maintenant, tapez simplement logstats
ou webstats
pour lancer l’analyse ! 🎉
📈 Génération de rapports HTML
Rapport statique
# Générer un rapport HTML basique
goaccess /var/log/apache2/access.log --output=/var/www/html/stats.html
# Version complète avec tous les logs
sudo bash -c 'zcat /var/log/apache2/access.log.*.gz ; cat /var/log/apache2/access.log*' | sudo goaccess - --ignore-crawlers --output=/var/www/html/stats-complete.html
Monitoring temps réel (pour les show-off)
Pour un tableau de bord en temps réel qui impressionne les collègues :
# Lancement du serveur temps réel
sudo goaccess /var/log/apache2/access.log --real-time-html --output=/var/www/html/live-stats.html --addr=0.0.0.0 --port=7890
Accédez ensuite à http://votre-serveur.com/live-stats.html
pour voir vos stats en direct !
🛡️ Sécurisation des rapports
⚠️ Important : Par défaut, vos rapports sont publics ! Sécurisez-les comme un vrai dev :
Option 1 : Protection par mot de passe Apache
# Créer un utilisateur
sudo htpasswd -c /etc/apache2/.htpasswd admin
# Créer le fichier .htaccess
sudo nano /var/www/html/.htaccess
Contenu du .htaccess
:
AuthType Basic
AuthName "Stats privées - touche pas à ça"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Option 2 : Restriction par IP (pour les paranos)
<RequireAll>
Require ip 192.168.1
Require ip 10.0.0
Require ip votre.ip.publique
</RequireAll>
📊 Ce que vous obtiendrez
Avec GoAccess, vous aurez accès à :
- 👥 Visiteurs uniques : Le vrai nombre, pas les bots
- 📄 Pages les plus vues : Vos hits et vos flops
- 🌍 Géolocalisation : D’où viennent les curieux
- 📱 Appareils : Desktop vs mobile vs « WTF c’est quoi cet user-agent ? »
- 🌐 Navigateurs : Chrome army vs Firefox rebels
- ⏰ Heures de pointe : Quand vos visiteurs procrastinent
- 📈 Tendances : L’évolution de votre traffic
- 🚫 Erreurs 404 : Vos liens cassés à réparer
🔥 Techniques avancées
1. Analyser seulement certains patterns
# Analyser uniquement les API calls
cat /var/log/apache2/access.log | grep "/api/" | goaccess -
# Analyser les erreurs 404 (pour debugger)
cat /var/log/apache2/access.log | grep " 404 " | goaccess - --ignore-crawlers
2. Exclure votre propre IP (pour pas polluer les stats)
# Dans /etc/goaccess/goaccess.conf
exclude-ip 192.168.1.100
exclude-ip 203.0.113.0-203.0.113.255
3. Formats de logs alternatifs
# Pour Nginx
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
# Pour des logs custom
log-format %h %^ %^ [%d:%t %^] "%r" %s %O "%R" "%u" %T
🎯 Script d’automatisation (pour les vrais lazy)
Créez un script pour automatiser la génération :
#!/bin/bash
# Fichier: /usr/local/bin/generate-stats.sh
LOG_FILES="/var/log/apache2/access.log*"
OUTPUT_DIR="/var/www/html/stats"
DATE=$(date +%Y-%m-%d)
# Créer le répertoire si nécessaire
mkdir -p $OUTPUT_DIR
# Générer le rapport du jour
sudo bash -c 'zcat /var/log/apache2/access.log.*.gz ; cat /var/log/apache2/access.log*' | \
sudo goaccess - --ignore-crawlers --output="$OUTPUT_DIR/rapport-$DATE.html"
echo "Rapport généré : $OUTPUT_DIR/rapport-$DATE.html"
# Nettoyer les anciens rapports (garder 30 jours)
find $OUTPUT_DIR -name "rapport-*.html" -mtime +30 -delete
Rendez-le exécutable et automatisez avec cron :
chmod +x /usr/local/bin/generate-stats.sh
# Ajouter au crontab (tous les jours à 6h, pour avoir les stats avec le café)
0 6 * * * /usr/local/bin/generate-stats.sh
🚨 Dépannage pour les moments de galère
Problème : « No valid data found »
Solution : Vos logs sont dans un format bizarre, testez différents formats :
# Voir le format de vos logs
head -5 /var/log/apache2/access.log
# Tester différents formats prédéfinis
goaccess --log-format=COMBINED /var/log/apache2/access.log
goaccess --log-format=COMMON /var/log/apache2/access.log
goaccess --log-format=VCOMBINED /var/log/apache2/access.log
Problème : Permission denied
# Vérifier les permissions
ls -la /var/log/apache2/
# Ajouter votre utilisateur au groupe adm
sudo usermod -a -G adm $USER
# Se reconnecter pour que ça prenne effet
newgrp adm
Problème : Logs qui tournent trop vite
# Configurer logrotate pour garder plus de logs
sudo nano /etc/logrotate.d/apache2
# Modifier pour garder 52 semaines au lieu de 14 jours
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 644 root adm
sharedscripts
...
}
🎉 Conclusion
GoAccess, c’est l’outil parfait pour les devs qui veulent des vraies stats sans bullshit. Pas de JavaScript à la con, pas de tracking, pas d’abonnement. Juste vos logs, un terminal, et des statistiques de qualité.
Le TL;DR :
- ✅ Installation :
sudo apt install goaccess gzip
- ⚙️ Config des formats dans
/etc/goaccess/goaccess.conf
- 🎯 Analyse avec
goaccess /var/log/apache2/access.log
- 🛡️ Sécurisation des rapports
- 🔄 Automatisation avec des scripts et cron
Vous avez maintenant tout ce qu’il faut pour analyser votre traffic comme un chef ! 📊
💡 Pro tip : Combinez GoAccess avec tail -f
pour du monitoring temps réel dans le terminal :
tail -f /var/log/apache2/access.log | goaccess -
Maintenant, arrêtez de procrastiner et allez analyser vos logs ! 🚀