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

Получите смысл из журналов apache с помощью awk и grep

Я пытаюсь понять смысл моих файлов журнала apache: я хочу проанализировать свой журнал доступа и получить некоторую статистику о 200 status code попаданий (сколько раз в каждый из них попали).

Итак, я попытался изучить некоторую магию awk и вот что я получил прямо сейчас:

grep "HTTP/1.1\" 200" access.log | awk '{print $7 } ' | sort | uniq -c | sort -n

Это делает большую часть того, что я хочу: он выбирает все записи журналов, которые закончились с 200 попаданиями из access.log, затем выбирает часть, которая соответствует пути, сгенерированному попаданием, сортирует их, подсчитывает каждый уникальный элемент и сортирует на основе числа раз этот уникальный элемент был поражен.

Результат выглядит так:

  1 /public/img/upload/image_3.jpg
  2 /public/img/upload/image_2.jpg
  8 /public/img/upload/image_1.jpg
 18 /public/js/main.js
 33 /
236 /index.html

Я пытаюсь продвинуть его немного дальше:

Здесь public / img / upload представляют все сгенерированные там обращения: 8 с изображения_1, + 2 с изображения_2 и 1 с изображения_3.

Есть ли какие-нибудь мастера awk, grep, которые укажут мне путь?

В grep команда (как и многие утилиты) будет принимать несколько файлов, предоставленных оболочкой шарик так

grep -h "HTTP/1.1\" 200" /path/to/log/dir/access.log*

(или подобное) должны делать то, что вы хотите в этом отношении.

Вторая часть вашего вопроса неясна - как мы можем узнать, что вас не интересуют отдельные файлы в /public/img/upload но вас интересуют отдельные файлы в /public/js и / но, видимо, нет /index.html.

Уточнение этого требования, вероятно, приведет к решению, но вам следует потратить некоторое время на то, чтобы решить, чего вы хотите, а затем попробовать самому.

Вас также может заинтересовать awstats.