nginx统计日志命令
由于线上用户访问量突然增加,有时候需要查看是那些ip经常访问、访问了哪些网站之类或者有人使用蜘蛛来爬等等
记录下来方便查看,也好预警是那些IP或者网站有问题等等原因~~~
统计日志文件ip和访问次数
awk '{a[$1]++}END{for(i in a)print i,a[i]}' access.log
统计日志文件的ip和前20访问次数
awk '{a[b[$1]++]}END{for(i=length(a);i>0;i--)for(j in b)if(b[j]==i){c++;if(c<=20)print j,i}}' access.log
统计访问 ip 的UV
awk '{print $1}' access.log|sort | uniq -c |wc -l
统计访问 ip 的PV
awk '{print $7}' access.log|wc -l
统计查询访问最频繁的URL
awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more
统计时间段日志
cat access.log| sed -n '/5\/Nov\/2020:11/,/6\/Nov\/2020:11/p'|more
查看时间段IP访问量(11-16点)
grep "6/Nov/2020:0[11-16]" access.log | awk '{print $1}' | sort | uniq -c
统计访问200次以上的IP
awk '{print $1}' access.log | sort -n |uniq -c |awk '{if($1 >200) print $0}'|sort -rn
统计访问前200名最频繁的页面
awk '{print $7}' access.log | sort |uniq -c | sort -rn | head -n 200
统计访问前200名最频繁的页面(PHP页面除外)
grep -v ".php" access.log | awk '{print $7}' | sort |uniq -c | sort -rn | head -n 200
统计访问前200名每秒的请求数
awk '{print $4}' access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 200
统计前 30 条传输时间超过 5 秒的页面
cat access.log|awk '($NF > 5){print $7}'|sort -n|uniq -c|sort -nr|head -30
统计蜘蛛抓取次数
grep 'Baiduspider' access.log |wc -l
统计蜘蛛抓取 404 状态码次数
grep 'Baiduspider' access.log |grep '404' | wc -l
统计nginx TCP当前连接数
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
本文分享完毕,感谢支持点赞~~