Quizá tienes que estudiar los registros de visitas de un proyecto que está en una nube, detrás de un CloudFront de Amazon Web Services. En este proyecto tenemos guardados los registros de las peticiones web que tenemos a los servidores. A veces es interesante revisarlos a este nivel.
Es decir, que tenemos registros de las visitas, anonimizados, por ejemplo con Google Analytics. Pero pasan muchas más cosas por debajo de Google Analytics que sólo quedan reflejados en los registros de los servidores. Así que resulta que queremos saber absolutamente cuáles han sido todos los registros. Queremos saber qué IPs son las que más nos visitan. Qué consultas al servidor son las que están provocando errores de servidor, los 500, incluso antes de que lleguen los robots que nos indexan. Qué IPs son de robots que nos están crawleando, o indexando, y un largo etcétera. Probablemente aquí veamos las IPs de los robots de Google, Bing, Yahoo que nos visitan en busca de información de la web..
Para esto no tenemos más remedio que ir a los registros únicos de cada petición al servidor. Si tenemos CloudFront tendremos que bajarnos los ficheros que se guardan en el Simple Storage System después de haberlo configurado. Todo esto se puede ver desde línea de comandos sin necesidad de ninguna interfaz visual, todo en modo texto, con GoAccess.
Instalando GoAccess
Para instalarlo en un sistema operativo GNU/Linux no tenemos que ir más que al gestor de paquetes. En mi caso con un Ubuntu hay que hacer:
$ sudo apt-get install goaccess
..y seguir las instrucciones. Para CloudFront hay que tocar las configuraciones del fichero /etc/goaccess.conf y poner las de CloudFront:
time-format %H:%M:%S
date-format %Y-%m-%d
log-format %d\t%t\t%^\t%b\t%h\t%m\t%^\t%r\t%s\t%R\t%u\t%^
..debes de tenerlas marcadas en los comentarios como que son las necesarias para CloudFront, el resto déjalas como están.
Cargando los ficheros en GoAccess
Ahora bien, descargamos todos los logs de CloudFront. Pero vienen todos en ficheros comprimidos .gz y GoAccess carga sólo ficheros de texto.
Podemos hacer una tubería del sistema y cargarlos además todos masivamente con zcat:
zcat *.gz | goaccess
Imagina que además, sólo quieres ver los datos de las entradas que han dado error, puedes filtrar con el comando awk así:
zcat *.gz | awk ‘$9~/400|401|402|403|404|500|501|502|503|504|504/’ | goaccess
Otra forma interesante es cargar los ficheros y sacar un reporte en HTML para verlo desde el navegador:
goaccess fichero.log -o report.html
Tiene otras opciones muy interesantes como cargar en tiempo real los resultados. Aquí ya con un poco de imaginación tenemos la herramienta perfecta para desde línea de comandos ver qué pasa a nivel de servidor.