«

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
还没收到回复