Nginx日志分析
对于nginx以下日志来说:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
' $status $body_bytes_sent "$http_referer" '
' "$http_user_agent" $request_time ';
1,统计Nginx服务器 独立IP数
awk '{print $1}' access.log | sort - r | uniq -c | wc -l
2,统计Nginx服务器总PV量
awk '{print $7}' access.log | wc -l
3,统计Nginx服务器UV量
awk '{print $11}' access.log | sort -r | uniq -c | wc -l
4,分析Nginx访问日志截至目前为止访问量前20的IP列表
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20
5,分析Nginx访问日志早上9点到下午6点的总请求量
sed -n "/2018:09:00/,/2018:18:00/"p access.log
awk '/2018:09:00/,/2018:18:00/' access.log | wc -l
6,分析Nginx访问日志总的独立IP数
awk '{print $1}' access.log |sort | uniq -c | wc -l
7,分析Nginx访问日志状态吗,404,502,503,500,301,302,打印出现次数大于20的IP 地址
awk '{if ($9~/502|404|503|302|301|499/) print $1,$9}' access.log |sort | uniq -c |sort -nr | awk '{if ($1>20) print $2}'
8,分析Nginx访问最多的页面
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -20
9,分析Nginx访问日志请求处理时间大于5s的URL,并打印出时间,URL,访客,IP
awk '{if ($NF >5) print $NF,$7,$1}' access.log | sort -nr | more
日志切割:
#!/bin/bash
#nginx log shell
FILE_LOG= /usr/local/nginx/logs/access.log
BACK_LOG= /data/backup/'date +%Y%m%d'
echo -e "Please wait start cut shell scripts"
sleep 2
if [ ! -d $BACK_LOG]; then
mkdir -p $BACK_LOG
fi
mv $FILE_LOG $BACK_LOG
kill -USR1 'cat /run/nginx/nginc.pid'
echo "===============^-^==============="
echo "The Nginx log Cutting Successfully!"
crontab -e
0 0 * * * /bin/sh /data/nginx_cut_log.sh >>/tmp/nginx_cut.log 2 >&1


浙公网安备 33010602011771号