GoAccess es una herramienta de código abierto que permite analizar los datos de los logs generados por un servidor web y mostrar gráficamente toda esa información.
A poco que tengan un poco de tráfico, los servidores web generan (si están bien configurados) datos de registro que guardan en los ficheros de logs. Revisar esos datos en crudo y sacar datos concretos es, como poco, complicado. Por ello hay herramientas que analizan esos datos y muestran un bonito informe con gráficas fáciles de interpretar.
Es el caso de GoAccess, una herramienta de código libre que podemos usar en nuestro servidor web y genera un informe en HTML o por pantalla (interfaz ncurses).
Como ejemplo, voy a instalar la herramienta en el servidor web que hospeda este humilde blog, que está ejecutando RockyLinux 9 bajo arquitectura ARM y el servidor web Apache.
Tras revisar las instrucciones de instalación, creo que lo más cómodo es usar la imagen de contenedor que ofrecen.
Primero es instalar, si no esta instalado ya, la herramienta para gestionar y ejecutar contenedores. En mi caso, podman:
$ sudo dnf install podman
Si usas docker las instrucciones son las mismas, simplemente cambiar la palabra "podman" por "docker".
Descargo el contenedor:
$ podman pull allinurl/goaccess
Y envío un log del Apache al contenedor, el cual me generará un informe en HTML:
$ sudo cat /var/log/httpd/nevatblog-ssl-access.log | podman run --rm -i -e LANG=$LANG allinurl/goaccess -a -o html --log-format COMBINED - > report.html
Y ya lo tendríamos. Podemos coger ese fichero y descargarlo localmente para su revisión, subirlo a un servidor web, automatizar su ejecución para que vaya sacando informes periódicamente... lo que creamos conveniente.
Es una herramienta muy fácil de instalar y ejecutar, si necesitas ver estadísticas de tu servidor web sin recurrir a sistemas externos como Google Analytics y similares.
Como curiosidad, para este blog el informe indica 419 visitantes únicos en 5 días.
Alguna vez he revisado los logs y he visto que hay mucho ataque (probablemente automatizado) que intenta acceder a ficheros concretos en busca de vulnerabilidades (poco se van a llevar, no hay nada confidencial), así que la cifra real seguramente sea mucho menor.
Un ejemplo que dicho informe debe ser analizado por alguien que entienda un poco. Los datos en bruto no son suficientes para tener una foto correcta de la situación.
02/08/2024 - Linux