浏览文章

文章信息

Apache access.log 按照日期查看 15169

cat access.* | grep "18/Jun/2020" | awk '{ print $1 }' | sort | uniq -c | sort -n


我的服务器的CPU使用率异常高,我可以看到Apache使用了太多的内存。我有一种感觉,我被一个IP所包围-也许您可以帮助我找到他?

我使用以下行来查找10个最“活跃”的IP:

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

前5个IP对服务器的请求大约是“平均”用户的200倍。但是,我无法确定这5位访问者是否只是非常频繁的访问者,或者他们正在攻击服务器。

有没有办法将上述搜索指定到一个时间间隔,例如 最近两个小时还是今天的10到12点之间?

干杯!

在过去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


原创