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.