我的服务器的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