Goaccess
| Fiche express | |
|---|---|
| Domaine | Analyse de logs web en temps réel |
| Commande | goaccess
|
| Contexte | Logs Apache/Nginx (ou tout format personnalisé) — sortie terminal (ncurses) ou rapport HTML |
| Voir aussi | Systemctl (lancer goaccess en service persistant) |
GoAccess est un analyseur de logs web open source qui fonctionne en temps réel. Il lit un fichier de log Apache, Nginx ou un format personnalisé et affiche des statistiques (visiteurs, requêtes, codes de retour, referers, user-agents, géolocalisation…) soit dans un dashboard terminal (ncurses), soit sous forme de rapport HTML autonome, avec une variante HTML qui se met aussi à jour en direct via websocket.
Installation
# Debian/Ubuntu
apt install goaccess
# RHEL/CentOS (EPEL)
yum install -y epel-release
yum install -y goaccess
# Depuis les sources (versions récentes non packagées)
wget https://tar.goaccess.io/goaccess-1.9.tar.gz
tar -xzvf goaccess-1.9.tar.gz
cd goaccess-1.9/
./configure --enable-utf8 --enable-geoip=mmdb
make
make install
Utilisation en terminal
goaccess /var/log/nginx/access.log -c # assistant interactif (choix du format de log)
goaccess /var/log/nginx/access.log --log-format=COMBINED # format Apache/Nginx combiné classique
goaccess /var/log/apache2/access.log --log-format=VCOMBINED # combiné + nom de vhost en premier champ
Options utiles pour affiner l'analyse :
goaccess access.log --log-format=COMBINED \
--ignore-crawlers \ # exclut les bots connus des stats
--anonymize-ip \ # anonymise les IP dans le rapport (RGPD)
--no-query-string # ignore les paramètres GET dans le regroupement des URL
Rapport HTML statique
goaccess /var/log/nginx/access.log --log-format=COMBINED -o /var/www/html/report.html
Génère un fichier HTML autonome (graphiques inclus), à régénérer périodiquement via cron pour un rapport toujours à jour.
Rapport HTML en temps réel (websocket)
goaccess /var/log/nginx/access.log --log-format=COMBINED \
-o /var/www/html/report.html \
--real-time-html \
--port=7890 \
--daemonize
Le rapport HTML se met alors à jour en direct dans le navigateur (sans recharger la page) via une connexion websocket sur le port indiqué (7890 par défaut) — penser à l'ouvrir dans le pare-feu, ou à passer par un reverse-proxy Nginx qui fait suivre les en-têtes `Upgrade`/`Connection` vers ce port.
Suivi en direct depuis un flux
GoAccess peut aussi lire un flux (pipe) plutôt qu'un fichier fixe, utile pour analyser les logs au fil de l'eau sans attendre une rotation :
tail -f /var/log/nginx/access.log | goaccess --log-format=COMBINED -
Persistance des données
Par défaut, GoAccess perd ses statistiques à chaque redémarrage. Pour conserver un historique cumulé entre deux exécutions (par exemple entre deux rotations de logs) :
goaccess access.log --log-format=COMBINED --persist --restore --db-path=/var/lib/goaccess
--persist écrit les données de la session sur disque, --restore les recharge au démarrage suivant — combiner les deux permet un cumul continu ; --keep-last=30 limite l'historique conservé (ici 30 jours).
Voir aussi
- Systemctl — pour lancer
goaccess --daemonizecomme un service systemd persistant plutôt qu'à la main