我的服務器的CPU使用率異常高,而且我可以看到Apache使用的存儲方式太多了。 我有一種感覺,我被一個單一的IP DOS - 也許你可以幫我找到他?根據日期範圍篩選日誌文件條目
我用下面的行,尋找10個最「活躍」的IP:
cat access.log | awk '{print $1}' |sort |uniq -c |sort -n |tail
前5位的IP約200倍的對服務器的請求,作爲「平均」用戶。但是,我無法確定這5位訪問者是否非常頻繁,或者他們正在攻擊服務器。
是否有辦法,指定上述搜索到一個時間間隔,例如。最近兩個小時或今天10-12之間?
乾杯!
已更新2011年10月23日 - 我所需要的命令:
獲取最後X小時這裏有兩個小時]內的條目
awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print Date FS $4}' access.log
獲得最後的X小時這裏有兩個內最活躍的IP地址小時]
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
我很懶;我將日誌複製到Excel中並創建一個數據透視表... – Ben
@Ben「現在你有兩個問題。」 – tripleee