---
categories: web sysadmin system
title: Howto GoAccess
...

* Documentation: <https://goaccess.io/man>

[GoAccess](https://goaccess.io) est un outil pour analyser facilement des logs Apache ou Nginx (et d'autres formats) : générer rapidement une page de rapport HTML, stats ncurses et même surveillance temps réel.

~~~
# apt install goaccess
~~~

Si besoin d'une version plus récente, l'upstream distribue des paquets Debian avec une version plus récente.

~~~
# echo "deb http://deb.goaccess.io $(lsb_release -cs) main" >> /etc/apt/sources.list.d/goaccess.list
# wget http://deb.goaccess.io/gnugpg.key -O /etc/apt/trusted.gpg.d/goaccess.asc
# apt update && apt install goaccess
~~~

Il faut ensuite éditer `/etc/goaccess.conf`, en choisissant le format de log, par exemple :

~~~
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
~~~

Pour HAProxy, le `log-format` est le suivant :

~~~
log-format %^ %^ %^ %^ %^ %^ %h:%^ [%d:%t.%^] %^ %^ %^/%^/%^/%L/%^ %s %b %^ %^ %^ %^ %^ {%v|%u} "%m %U %H"
~~~

Pour générer un rapport HTML (un seul fichier, les styles sont inline) :

avec GoAccess 0.8.3 :

~~~
# goaccess -f access.log -a -o html
~~~

avec GoAccess 1.2 :

~~~
# goaccess access.log -a -o /var/www/rapport.html
~~~

Pour suivre un access.log en temps réel :

~~~
# goaccess -f access.log
~~~

Pour avoir un access de 12h à 16h du 1er Fevrier :

~~~
# grep "1/Fev/2017:1[2-6]" /var/log/apache2/access.log > goacces.tmp
# goaccess -f goaccess.tmp -a -o html
~~~

# Interface web + WebSocket

Pour avoir le suivi en temps réel dans un navigateur, on peut créer une unité systemd qui lancera GoAccess et sa WebSocket.

`/etc/systemd/system/goaccess.service`.

~~~
[Unit]
Description=GoAccess real time web stats.
After=network.target

[Service]
ExecStart=/usr/bin/goaccess -p /etc/goaccess/goaccess.conf /var/log/haproxy.log -o /var/www/goaccess.html --real-time-html --daemonize
Type=forking
User=goaccess

[Install]
WantedBy=default.target
~~~

~~~
# systemctl daemon-reload
# systemctl enable goaccess
# systemctl start goaccess
~~~

# Erreur

~~~
Fatal error has occurred
Error occured at: src/parser.c - parse_log - xxxx
No log format was found on your conf file.
~~~

Si cette erreur survient, il faut modifier le fichier de conf /etc/goaccess.conf pour décomenter les valeurs logformat correspondant. 
