mxki.de

Nur ein weiterer Blog

NGINX Logfiles mit GoAccess auswerten

Um einen schnellen Überblick über den Traffic eines Webservers (hier NGINX) zu erhalten, muss es nicht immer Matomo oder Google Analytics sein.

GoAccess ist ein nützliches Programm zur Auswertung der Webserver Logfiles, welches per ncurses direkt über das Terminal bedient werden kann. Es gibt aber auch eine ansehnliche HTML Darstellung.

GoAccess screenshot

Beipiel Screenshot (Quelle: https://goaccess.io/)

In vielen Linux Distributionen ist GoAccess bereits enthalten. Installation unter Debian Buster:

# GoAccess installieren
sudo apt install goaccess
# GoAccess starten mit Verweis auf Logdatei
sudo goaccess /var/log/nginx/access.log

Anschließend muss das Format der Logdatei gewählt werden. Bei NGINX ist dies standardmäßig “NCSA Combined Log Format”.

GoAccess config

GoAccess Bildschirm nach dem Start

Hilfreich ist auch das Format mit Virtual Host, da GoAccess hiermit die Virtual Hosts getrennt auflistet (NCSA Combined Log Format with Virtual Host). Leider verwendet NGINX dieses Format nicht von Haus aus, man kann es aber selbst einfach einrichten.

Hierfür muss ein eigenes Logformat in NGINX angelegt werden (z.B. in /etc/nginx/nginx.conf) und anschließend dem access_log zugewiesen werden.

##
# Logging Settings
##

log_format vhost_combined
    '$host:$server_port $remote_addr - $remote_user [$time_local] '
    '"$request" $status $body_bytes_sent '
    '"$http_referer" "$http_user_agent"';

access_log /var/log/nginx/access.log vhost_combined;
error_log /var/log/nginx/error.log;

Das Format entspricht grundsätzlich dem bereits vorhanden “combined” Format, zusätzlich wird noch der angefragte Hostname und der Port vorangestellt.

Falls in access.log bereits Einträge mit dem vorherigen Format enthalten sind, wird es Fehler in GoAccess beim Versuch geben die Logdatei zu öffnen. Das Format innerhalb der Logdatei muss einheitlich sein.