Фильтровать записи файла журнала по диапазону дат

У моего сервера необычно высокая загрузка ЦП, и я вижу, что Apache использует слишком много памяти. У меня такое ощущение, что меня DOS использует один IP - может быть, вы поможете мне его найти?

Я использовал следующую строку, чтобы найти 10 самых «активных» IP:

cat access.log | awk '{print $1}' |sort  |uniq -c |sort -n |tail

Первые 5 IP имеют примерно в 200 раз больше запросов к серверу , как «средний» пользователь. Однако я не могу выяснить, являются ли эти пятеро частыми посетителями или они атакуют серверы.

Есть ли способ указать указанный выше поиск по временному интервалу, например. последние два часа ИЛИ сегодня с 10 до 12?

Ура!

ОБНОВЛЕНО 23 октября 2011 г. - Необходимые мне команды:

Получить записи в течение последних X часов [Здесь два часа]

awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print Date FS $4}' access.log

Получить наиболее активные IP-адреса за последние X часов [Здесь два часа]

awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1}' access.log | sort  |uniq -c |sort -n | tail

Получить записи в течение относительный промежуток времени

awk -vDate=`date -d'now-4 hours' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print Date FS Date2 FS $4}' access.log

Получить записи в абсолютном промежутке времени

awk -vDate=`date -d '13:20' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'13:30' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print $0}' access.log 

Получить наиболее активные IP-адреса в абсолютном промежутке времени

awk -vDate=`date -d '13:20' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'13:30' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print $1}' access.log | sort  |uniq -c |sort -n | tail
35
задан codeforester 27 March 2017 в 04:57
поделиться