Introducción

GoAccess es un analizador de logs web en tiempo real de código abierto. Funciona directamente en el terminal como un panel interactivo ncurses, y también puede generar informes HTML autocontenidos con gráficas. Soporta Apache, Nginx, Caddy, Amazon S3, Elastic Load Balancing y cualquier servidor que escriba logs de acceso en formato estándar.

Está activamente mantenido y disponible en los repositorios oficiales de la mayoría de distribuciones Linux.

Instalación

En Debian y Ubuntu:

sudo apt-get install goaccess

Para la versión más reciente, el repositorio oficial de GoAccess ofrece paquetes más actualizados:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | \
  sudo tee /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
sudo apt-get update && sudo apt-get install goaccess

Uso básico en el terminal

goaccess /var/log/nginx/access.log --log-format=COMBINED

Abre un panel de terminal interactivo. Usa las teclas de flecha y TAB para navegar entre paneles; pulsa q para salir.

Formatos de log

GoAccess necesita saber el formato de tu archivo de log. Presets comunes:

| Flag | Usar con | |---|---| | --log-format=COMBINED | Apache / Nginx combined (el más habitual) | | --log-format=COMMON | Apache common log | | --log-format=CADDY | Log JSON de Caddy | | --log-format=W3C | W3C / IIS | | --log-format=VCOMBINED | Nginx con virtual host |

También puedes definir un formato completamente personalizado con los flags --log-format, --date-format y --time-format.

Generar un informe HTML estático

goaccess /var/log/nginx/access.log --log-format=COMBINED \
  -o /var/www/html/informe.html

Genera un único archivo HTML autocontenido con gráficas interactivas — sin CDN de JavaScript ni dependencias externas. Ábrelo en cualquier navegador o sírvelo desde tu servidor web.

Informe HTML en tiempo real

GoAccess puede mantener el informe HTML actualizado en tiempo real mediante WebSocket:

goaccess /var/log/nginx/access.log --log-format=COMBINED \
  --real-time-html \
  -o /var/www/html/informe.html \
  --ws-url=ws://tuservidor.com:7890

Analizar logs comprimidos y rotados

Puedes pasar múltiples archivos, incluyendo logs rotados comprimidos con gzip:

zcat /var/log/nginx/access.log.*.gz | \
  goaccess - --log-format=COMBINED

Para incluir tanto el log actual como los rotados en un solo informe:

cat /var/log/nginx/access.log \
  <(zcat /var/log/nginx/access.log.*.gz) | \
  goaccess - --log-format=COMBINED -o informe.html

Qué muestra el panel

  • Total de peticiones, visitantes únicos, ancho de banda consumido
  • URLs y archivos estáticos más solicitados
  • Códigos de estado HTTP (200, 301, 404, 500, etc.)
  • Tráfico por hora y por día
  • Sitios y términos de búsqueda que generan más referencias
  • Sistemas operativos y navegadores
  • Geolocalización (requiere base de datos MaxMind GeoIP)
  • Páginas con más errores 404

Conclusión

GoAccess combina la vista en tiempo real que necesitas durante un incidente con los informes HTML detallados útiles para compartir con el equipo. Funciona con cualquier servidor que escriba logs de acceso estándar, siendo el reemplazo moderno de herramientas antiguas como ApacheTop o Webalizer.