Vous souhaitez analyser les fichiers de log access.log de votre serveur Web facilement et visualiser en temps réel le nombre de requêtes arrivant sur votre serveur afin d'avoir un nombre précis de visiteurs ?

Je suis tombé sur une pépite en surfant sur le Web ce Week-end, il s'agit du logiciel GoAccess, un logiciel OpenSource permettant de visualiser depuis un portail Web ou en mode terminal Linux le trafic HTTP entrant sur votre serveur Web.

Contraitement aux statistiques que peut produire un outil comme Google Analytics qui se base sur l'utilisation de cookies, GoAccess fournit des rapports moins avancé mais exacts qui prennent en compte les visiteurs qui utilisent des adblockers et les visiteurs qui refusent l'utilisation de cookies.

Pour l'utiliser, vous devez disposer de fichiers de logs Nginx, Apache, Tomcat ... Idéalement au format "Combined" pour les parser de manière natif.

Comment installer GoAccess sur Ubuntu ?

Pour installer GoAccess, c'est très simple, je vous conseille d'utiliser le repository privé Debian/Ubuntu de GoAccess pour bénéficier des derniers packages du produit.

$ 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 --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
$ sudo apt-get update
$ sudo apt-get install goaccess

Des statistiques en temps réel depuis votre terminal Linux ?

Une fois le logiciel installé, pour le lancer, c'est très simple, exécutez la commande suivante pour visualiser les statistiques en temps de réel de votre site Web depuis votre terminal Linux :

$ goaccess /var/log/nginx/access.log -c

goaccess-terminal

Des statistiques sous forme de page Web ?

Pour produire une page statique partageable, la commande est très simple, la voici :

$ goaccess /var/log/nginx/access.log -o /var/www/default/public_html/statistics.html --log-format=COMBINED 

goaccess-nginx

Dans cet exemple, la page générée est statique et est exposée dans le répertoire du vhost par défaut du serveur Web NGINX sur Ubuntu/Debian.

Pour que la page Web se mette à jour en temps réel, le paramètre à ajouter à la ligne de commande est le suivant :

$ goaccess /var/log/nginx/access.log -o /var/www/default/public_html/realtime.html --log-format=COMBINED --real-time-html

Cette page Web se rafraichira automatiquement, GoAccess ouvrira un serveur WebSocket pour transmettre les informations en temps réel.

Un proxy Websocket pour saupoudrer le tout !

Si vous n'avez pas la main sur l'ouverture des ports sur votre serveur, voici une astuce pour proxyfier la Websocket de GoAccess au travers du serveur NGINX :

$ goaccess /var/log/nginx/access.log -o /var/www/default/public_html/realtime.html --log-format=COMBINED --real-time-html --ws-url=wss://monserveur:443/ws --port 7890 

N'oubliez pas d'ajouter la configuration suivante à votre vhost NGINX :

location /ws {
        proxy_pass http://localhost:7890;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
}

Vous voilà un expert de GoAccess. En plus d'analyser le trafic entrant de son site, cet outil est très pratique pour identifier les pages non trouvées et les ressources statiques en erreur.

Bref, c'est un outil très simple et très utile pour la supervision de serveurs Web !