分析Nginx 5分钟内的 日志 然后统计出 访问次数最多的ip 地址 和次数

#!/bin/bash
#author: linuxhub.org
#取出nginx五分钟内的日志

#Nginx日志格式:

#if [ -z $1 ];then
#echo “请在脚本后面加上日志文件!!”
#exit 1
#fi

#日志文件

logfile=/var/log/nginx/access.log
#logfile=

#开始时间
#start_time=date -d"$last_minutes minutes ago" +"%H:%M:%S"
start_time=date -d"5 minutes ago" +"%H:%M:%S"
#start_time=”14:29:20″

#结束时间
stop_time=date +"%H:%M:%S"
#stop_time=”14:35:36″

#tac $logfile | awk -v st=”$start_time” -v et=”$stop_time”
tac $logfile | awk -v st=”$start_time” -v et=”$stop_time” ‘
BEGIN{
# print “\n——————————-“;
# print “开始时间:”st;
# print “结束时间:”et;
# print “在这个时间段(1分钟内)的日志如下:”
# print “———————————\n”
}

{

#第4列的时间数据,然后按:冒号进行分割出时间
#split($4,i,”:”);

#组合时间 例: 14:37:49
#t=sprintf(“%s:%s:%s”,i[2],i[3],i[4]);

#第4列的时间数据,取出时:分:秒
t=substr($4,RSTART+14,21);

#判断在st与et之间的时间
if(t>=st && t<=et)
{print $0}
}
END{
print “\n”
}
‘>/etc/zabbix/nginxip.txt

cat /etc/zabbix/nginxip.txt |cut -d ‘ ‘ -f 1 |sort |uniq -c | sort -nr | awk ‘{print $0 }’ | head -n 10 >/etc/zabbix/nginx3.txt
cat /etc/zabbix/nginx3.txt | head -1 | awk ‘{print $1}

Leave a Reply

Your email address will not be published. Required fields are marked *