У моего сервера необычно высокая загрузка ЦП, и я вижу, что 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