Inspeccionar los registros de Caddy con GoAccess

2025–01–12

Requerimientos necesarios

Instalar Caddy

sudo dnf install -y 'dnf-command(copr)'
sudo dnf copr enable @caddy/caddy
sudo dnf install caddy -y

Que es Goaccess?

GoAccess es un analizador de registros web en tiempo real de código abierto y un visor interactivo que se ejecuta en un terminal en sistemas *nix o a través de su navegador.

Añadir el repositorio de Epel

$ sudo dnf config-manager --set-enabled crb
$ sudo dnf install epel-release
$ sudo dnf update

Instalar goaccess

$ sudo dnf install goaccess

Instalar Caddy transform-encoder modulo

$ sudo caddy add-package github.com/caddyserver/transform-encoder

Caddyfile

Añadir en /etc/caddy/Caddyfile

# Use logging
(logging) {
  log {
      output file /var/log/caddy/access.log
      format transform `{request>remote_ip} - {user_id} [{ts}] "{request>method} {request>uri} {request>proto}" {status} {size} "{request>headers>Referer>[0]}" "{request>headers>User-Agent>[0]}"` {
      time_format "02/Jan/2006:15:04:05 -0700"
      }
  }

Yo he decido usar el modo “combinado” Apache Combined Log Format.

Como visualizar los registros con goaccess?

Desde la terminal

$ sudo goaccess /var/log/caddy/access.log --log-format=COMBINED

Desde Web UI

Podemos crear un subdominio para acceder desde el navegador .

Ejemplo Caddyfile:

logs.[domainname] {
  import logging
  tls [address]@[domainname]
  encode gzip zstd
  file_server
  root * /var/www/logs.[domainname]
}

Creamos systemd service para goaccess:

$ sudo systemctl edit --full --force goaccess.service

Añadimos las seguientes lineas:

[Unit]
Description=GoAccess Live Log Analyzer
After=caddy.service

[Service]
Type=exec
ExecStart=/usr/bin/goaccess /var/log/caddy/access.log -o /var/www/logs.[domainame]/index.html --log-format=COMBINED --html-prefs='{"theme":"darkGray"}'
RestartSec=300
Restart=always

[Install]
WantedBy=multi-user.target

Iniciar el servicio:

$ sudo systemctl start goaccess

Visitar la pagina desde el navegador.