Cuente las descargas de archivos grandes desde registros de Apache en MySQL

Cuente las descargas de archivos grandes desde registros de Apache en MySQL

Quiero contar las descargas de archivos de aproximadamente 10 archivos diferentes que un cliente solicitó. Hemos generado un formato de registro separado para los registros de Apache que se pueden cargar en una base de datos MySQL.

Para una consulta tan específica, esperaba poder escribir una declaración SQL para contar las descargas en lugar de instalar un analizador de registros sobrecargado.

Este es el formato de registro utilizado para los registros de MySQL:

LogFormat "\"%a\",%{%Y%m%d%H%M%S}t,%>s,\"%b\",\"%{Content-Type}o\", \"%U\",\"%{Referer}i\",\"%{User-Agent}i\"" mysql

Esto produce este tipo de archivo csv:

"156.107.33.66",20121017113516,200,"10094440","application/x-msdos-program",          "/flexnet/FLEXnetWinSetup.exe","http://www.example.com/downloads/flexnet","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"

Pero los archivos más grandes de más de 100 MB se dividen en fragmentos, por lo que no es un simple recuento de los registros.

¿Alguien ha probado algo similar?

Respuesta1

Si al dividir en fragmentos quiere decir que los clientes están descargando los archivos con múltiples respuestas HTTP 206, entonces debería intentar registrar el contenido del encabezado Content-Range incluido en la respuesta:

LogFormat "\"%a\",%{%Y%m%d%H%M%S}t,%>s,\"%b\",\"%{Content-Range}o\",\"%{Content-Type}o\", \"%U\",\"%{Referer}i\",\"%{User-Agent}i\"" mysql

Esto debería producir algo como esto (no probado)

"156.107.33.66",20121017113516,200,"10094440","bytes 0-999/3980","application/x-msdos-program",          "/flexnet/FLEXnetWinSetup.exe","http://www.example.com/downloads/flexnet","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"

información relacionada