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

本文分享完毕,感谢支持点赞~~

原文地址:https://www.cnblogs.com/mike666/p/13937677.html