Visualizando logs de acceso de frontales web como una partida de pong con Logstalgia

By | June 7, 2017

Buscando distintas formas de visualizar logs de frontales web acabé dando con Logstalgia. No se trata de la típica utilidad con la que obtener gráficas o estadísticas, sino que nos permite visualizar los logs de acceso de Apache, Nginx o IIS como una partida retro de pong.

Para instalarlo en Debian o derivadas ya lo tenéis disponible en repositorios:

apt install logstalgia

Para CentOS no lo he encontrado ni en sus repos por defecto ni en EPEL. En cualquier caso, podemos compilar los binarios desde código con la fórmula tradicional:

./configure
make && make install

Logstalgia también está disponible para los menos afortunados que utilicen Windows. Tenéis tanto el código como binarios compilados en el apartado Releases del proyecto en GitHub.

Por otro lado, para que Logstalgia pueda procesar nuestros logs, éstos deberán tener un formato estandarizado NCSA, el cual puede ser desde el formato común más simple al combinado/extendido:

NCSA Common Log Format (CLF)
    "%h %l %u %t \"%r\" %>s %b"

NCSA Common Log Format with Virtual Host
    "%v %h %l %u %t \"%r\" %>s %b"

NCSA extended/combined log format
    "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""

NCSA extended/combined log format with Virtual Host
    "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""

La visualización puede realizarse bien en tiempo real o a partir de un log que tengamos guardado. Bastante útil porque nos permitirá ver y analizar a posteriori la actividad de nuestro servidor web para localizar momentos de alta concurrencia -legítima o incluso fruto de un ataque DDOS- y poder configurar nuestro servidor y entorno de acuerdo a los datos analizados. Algunos ejemplos:

# Visualizar un log de acceso guardado (actualmente no es el log activo)
logstalgia /var/log/apache2/access.log.1

# Visualizar un log en tiempo real
tail -f /var/log/apache2/access.log | logstalgia --sync

Ejemplo de salida de Logstalgia. Vemos las IPs de origen a la izquierda, las requests realizadas sobre los recursos que sirve nuestro servidor web a la derecha y el código HTTP devuelto:

Aspecto de un ataque de denegación de servicio (DDOS):

Tenéis más documentación en la página del proyecto de GitHub, así como ejemplos de uso y formas de grabar la salida de Logstalgia con ffmpeg.