Inspeccionar los registros de Caddy con GoAccess
2025–01–12
Requerimientos necesarios
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.
Instalar goaccess en Ubuntu 24.04
curl -1sLf https://deb.goaccess.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/goaccess.gpg
echo "deb [signed-by=/usr/share/keyrings/goaccess.gpg arch=$(dpkg --print-architecture)] https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/goaccess.list
sudo apt update
sudo apt 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.