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

Как узнать количество загрузок Apache по неделям

(При необходимости перейдите к serverfault - мне это больше кажется проблемой приложения)

У меня есть PHP-сервер, на котором размещены файлы MP3 для подкаста. Я бы хотел получить разбивку по неделям, сколько раз файлы были загружены (действительно ли длинный хвост?). AWStats, похоже, не попадает в точку.

В идеале я бы получил файл Excel с одним файлом в каждой строке, затем столбец для каждой недели (или дня) с цифрами загрузки, агрегированными в одной ячейке для каждого файла / недели. Есть ли какое-нибудь решение (на основе PHP или приложение Windows, в которое я загружаю журналы), которое могло бы генерировать этот формат отчета?

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

Возврат результатов поиска Google колючий, с образцом журнала Вот

Другая мысль - передать запрос через страницу, которая зарегистрирует запрос в базе данных mysql, оттуда вы можете сгенерировать желаемые журналы

Предложение @phsr о показе страницы - лучшее. Но если вы не хотите этого делать, простой сценарий bash должен иметь возможность получить то, что вы хотите, из файлов журнала.

Я не очень хорошо разбираюсь в bash и т. Д., Но если файлы находятся в одном и том же каталоге, должно работать что-то вроде этого (псевдокод):

for each $file in $mp3dir
   echo $file + ',' + `cat apache.log | grep $file | wc -l` >>myreport.csv

Конечно, фильтр grep может включать что-то еще более конкретное, чтобы изолировать нерелевантные строки, которые могут существовать в журнале (ах).

Кроме того, apache.log на самом деле является накопительным кошка указанного файла журнала за период времени (при условии, что у вас есть надлежащий logrotate для ежедневной ротации журналов).

Другой подход может заключаться в использовании grep чтобы получить все строки ".mp3" из журнала, и используя sed чтобы сформировать строку csv из каждой записи, чтобы у вас было имя файла и дата в одной строке. Затем загрузите это в базу данных и выполните запросы оттуда.

Если кто-то может поместить это в "настоящий" bash, пожалуйста, сделайте :)

Вам нужно будет проанализировать файлы журнала веб-сервера. Формат журнала будет зависеть от веб-сервера и того, как настроено ведение журнала. Существуют модули для большинства языков, которые делают анализ журналов относительно тривиальным. Нет причин прибегать к написанию чего-либо с нуля на bash или awk.

Если вы не хотите писать какой-либо код, я предлагаю попробовать splunk. Существует бесплатная версия, которая позволяет вам анализировать до 500 МБ данных журнала ежедневно, это много данных журнала, поэтому вам подойдет бесплатная версия / версия для сообщества.

Splunk также может экспортировать результаты за вас.