Назад | Перейти на главную страницу

Подсчет загрузок больших файлов из журналов apache в mysql

Я хочу подсчитать количество загрузок примерно для 10 разных файлов, которые запрашивал клиент. Мы создали отдельный формат журнала для журналов apache, который можно загрузить в базу данных MySQL.

Для такого конкретного запроса я надеялся, что смогу написать оператор SQL для подсчета загрузок, а не устанавливать чрезмерно раздутый анализатор журналов.

Это формат журнала, используемый для журналов MySQL:

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

Это создает такой файл 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"

Но файлы размером более 100 МБ разбиты на части, поэтому это не просто подсчет журналов.

Кто-нибудь пробовал нечто подобное?

Если разделение на блоки означает, что клиенты загружают файлы с несколькими 206 HTTP-ответами, вам следует попытаться зарегистрировать содержимое заголовка Content-Range, включенного в ответ:

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

Должно получиться что-то вроде этого (не проверено)

"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"