Mój serwer ma niezwykle wysokie użycie procesora i widzę, że Apache używa zbyt dużo pamięci. Mam przeczucie, że otrzymałem DOS za pomocą jednego adresu IP - może pomożesz mi go znaleźć?Filtruj wpisy w pliku dziennika na podstawie zakresu dat
Użyłem następujące polecenie, aby znaleźć 10 najbardziej „aktywnych” IP:
cat access.log | awk '{print $1}' |sort |uniq -c |sort -n |tail
5 najlepszych IP mają około 200 razy więcej żądań do serwera, jako „przeciętnego” użytkownika . Jednak nie mogę się dowiedzieć, czy te 5 to bardzo często odwiedzający, czy atakują serwery.
Czy istnieje sposób, aby określić powyższe wyszukiwanie do przedziału czasu, np. ostatnie dwie godziny LUB od 10 do 12 dzisiaj?
Pozdrawiam!
Updated 23 Paź 2011 - Polecenia Potrzebowałem:
Get wpisy w ciągu kilku godzin w ostatnim X [tu dwie godziny]
awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print Date FS $4}' access.log
Get najaktywniejsze IP w godzinach ostatni X [tu dwa godziny]
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
Get wpisy ciągu względnej przedziale czasu
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
Get wpisy w absolutnej przedziale czasu
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
uzyskać większość bezwzględną aktywnych IP w przedziale czasu
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
Jestem leniwy; Chciałbym skopiować dziennik do programu Excel i utworzyć tabelę przestawną ... – Ben
@Ben "Teraz masz dwa problemy." – tripleee