Получить некоторое значение из журналов 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
Я пытаюсь продвинуть это немного дальше:
- because I have logrotate, I have many other files like
access.log.1, ..., access.log.N
and I want to get this statistics for all of them together. The only solution I have found is to usegrep "my 200 expression" -R /pathToDirWithLogs
which will grep over all files in directory, which clearly is not nice, because it will grep not only logs. Listing the files is also not an option, because I do not know the number N. - Меня не особо волнует каждый отдельный файл в /public/img/upload/, мне просто важно, сколько из них было найдено. Здесь я полностью потерян, не имея понятия, с чего начать. Но вот пример того, что я хочу для моего простого вывода
11 /public/img/upload/* 18 /public/js/main.js 33 / 236 /index.html
Здесь public / img / upload представляет все хиты, которые были сгенерированы там: 8 из image_1, + 2 из image_2 и 1 из image_3.
Есть ли какие-нибудь awk, grep фокусники, чтобы показать мне путь?
1 ответ
Команда grep (как и многие утилиты) будет принимать несколько файлов, предоставляемых оболочкой, поэтому
grep -h "HTTP/1.1\" 200" /path/to/log/dir/access.log*
(или аналогичный) должен делать то, что вы хотите в этом отношении.
Вторая часть вашего вопроса неясна - откуда нам знать, что вы не заинтересованы в отдельных файлах в /public/img/upload
но вы заинтересованы в отдельных файлах в /public/js
а также /
но, видимо, нет /index.html
,
Разъяснение этого требования, вероятно, приведет к решению, но вам следует потратить некоторое время на то, чтобы решить, чего вы хотите, а затем попробовать самостоятельно.
Вы также можете быть заинтересованы в awstats.