Я пытаюсь понять смысл моих файлов журнала 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
Я пытаюсь продвинуть его немного дальше:
access.log.1, ..., access.log.N
и я хочу получить эту статистику для всех вместе. Единственное решение, которое я нашел, - использовать grep "my 200 expression" -R /pathToDirWithLogs
который будет выполнять grep по всем файлам в каталоге, что явно нехорошо, потому что он будет искать не только журналы. Перечислить файлы тоже не вариант, потому что я не знаю числа N.
11 /public/img/upload/*
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.