У моего сервера необычно высокий уровень использования ЦП, и я вижу, что Apache использует слишком много памяти. У меня такое чувство, что я являюсь DOS'd одним IP - возможно, вы можете помочь мне найти его?
Я использовал следующую строку, чтобы найти 10 самых "активных" IP-адресов:
cat access.log | awk '{print $1}' |sort |uniq -c |sort -n |tail
Топ-5 IP-адресов имеют примерно в 200 раз больше запросов к серверу, как "средний" пользователь. Однако я не могу узнать, являются ли эти 5 очень частыми посетителями или они атакуют серверы.
Есть ли способ указать указанный выше поиск на временной интервал, например. последние два часа или между 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