Filtern Sie Protokolldateieinträge basierend auf dem Datumsbereich

Mein server ist mit ungewöhnlich hohen CPU-Auslastung, und ich kann sehen, Apache ist mit viel zu viel Speicher.
Ich habe das Gefühl, ich bin DOS würde von einer einzigen IP-Adresse - vielleicht können Sie mir helfen, ihn finden?

Habe ich die folgende Zeile zu finden, die 10 die meisten "aktiven" IPs:

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

Den top 5 IPs haben etwa 200 mal so viele Anfragen an den server, die als "Durchschnittliche" Benutzer. Jedoch kann ich nicht herausfinden, ob diese 5 sind nur sehr häufige Besucher, oder Sie sind Angriffe auf die Server.

Ist es Weg, Angabe der oben genannten Suche nach einem Zeit Intervall, zB. die letzten zwei Stunden ODER zwischen 10-12 heute?

Prost!

AKTUALISIERT 23 OKT 2011 - die Befehle, Die ich brauchte:

Holen Sie Einträge innerhalb der letzten X Stunden [Hier zwei Stunden]

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

Bekommen die meisten aktiven IP-Adressen, die innerhalb der letzten X Stunden [Hier zwei Stunden]

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

Bekommen, Einträge in relativer Zeitspanne

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

Bekommen Einträge in die absolute Zeitspanne

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 

Bekommen die meisten aktiven IP-Adressen in absolute Zeitspanne

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

InformationsquelleAutor der Frage sqren | 2011-10-09

Schreibe einen Kommentar