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

Есть ли бесплатное решение для подсчета количества контекстных корней в файле apache?

У меня есть файл журнала apache. Мне нужно сообщить, сколько строк (запросов) из определенного корня контекста. Журналы apache уже начинаются с косой черты, а корень контекста - до второй косой черты.

Пример журнала Apache:

11.222.33.44 - - [14/Feb/2013:00:27:33 -0600] "GET /lifecontent/monitor?test=siteseer&format=siteseer HTTP/1.1" 200 275 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)" "SSL=on"
111.22.333.44 - - [14/Feb/2013:00:29:29 -0600] "GET /lc/Brokerage%20Manager/IDG%20Licensing%20and%20Appointment%20Process/IDG%20Franchise%20Reference%20Manual HTTP/1.1" 302 - "-" "(Windows NT)" "SSL=-"

Два контекстных корня будут "/ lifecontent /" и "/ lc"

Не уверены, какой инструмент подойдет лучше всего? Мне нравится графический интерфейс или пакетное решение.

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

Вы можете сделать это с помощью простого сценария оболочки:

cut -d/ -f4 access.log | sort | uniq -c | sort -g

В cut команда извлекает 5-е / -ограниченное поле (т.е. "корень контекста"), sort | uniq -c затем подсчитывает количество вхождений каждого и sort -g упорядочивает их по количеству вхождений.

Запуск этого на моем веб-сервере дает:

   5477 misc
  11130 bzr
  32181 raspbian
  35912 files
  43020 sites

Я принял решение mgorven, потому что оно направило меня в правильном направлении для окончательного рабочего решения. После использования своего решения иногда встречаются значения строки запроса, а иногда корень контекста не имеет конечной косой черты. Таким образом, "/ lc /" и "/ lc" и "/ lc? X = y" считаются как "lc". Итак, я использовал это решение:

cut -d" " -f7 access.log | cut -d? -f1 | cut -d/ -f2 | sort | uniq -c | sort -g

Это покажет отдельные файлы, к которым был осуществлен доступ, и пустую строку, если был доступен только "/".

Также я сделал это в Windows, используя UnxUtils.zip: http://sourceforge.net/projects/unxutils. Все, что мне нужно было извлечь, было вырезать, отсортировать, уникнуть.

Спасибо, mgorven !!