Nginx Log日志统计分析(IP)
指尖二进制 • 1 年前 • 805 次点击 • NGINX
由于cat运行效率低所以就用awk:
awk '{print $1}' access.log |wc -l
切割日志ip:
awk '{print $1}' access.log |more
把所有ip前面加上一个总数:
awk '{print $1}' access.log |uniq -c | more
查看独立访问的ip:
awk '{print $1}' access.log |uniq -c | awk '{print $2}' | more
查看独立访问的ip总数:
awk '{print $1}' access.log |uniq -c | awk '{print $2}' | wc -l
查看截至目前为止访问由高到低的ip排行:
awk '{print $1}' access.log |sort |uniq -c |sort -nr|more
查看截至目前为止访问最高的ip排行,前20个:
awk '{print $1}' access.log |sort |uniq -c |sort -nr|head -20
找到当前日志中502或者404错误的页面并统计:
awk '{print $0}' /var/log/nginx/access.log|egrep "404|502"|awk '{print $1,$7,$9}'|more
假设在某一个时间段访问量突然间增高,甚至达到上万次。这个时候就需要对访问IP次数多的做一些限制。
怎么去筛选出来访问最多的IP?看脚本:
#!/bin/bash
#auto Nginx log analysis
#by zhangsong 2018-01-12
Time1=$1
Time2=$2
LOG_DIR=/usr/local/nginx/logs/
FILE=access.log
if [ -z $1 -o -z $2 ];then #如果什么都不输入的话提示输入字符
echo -e "please Enter Args \$1 or \$2 Time Slot.\n----------\nUsage { sh $0 2018:00:12 2018:00:30}"
exit 0
fi
#Analyse Nginx Logs
echo -e "\033[32m \033[1m"
echo "------------------------------"
echo "Now Start Logs analyse scripts,Please wait."
echo
echo "------------------------------"
sed -n "/$Time1/,/$Time2/"p $LOG_DIR/$FILE|awk '{print $1}'|sort |uniq -c |sort -nr|head -10
echo "------------------------------"
指定某一个时间段:
bash nginx_log.sh 2018:12:00 2018:12:30