<返回更多

nginx系列:常用利用shell统计日志

2020-08-31    
加入收藏

0x01:根据访问IP统计UV

awk '{print $1}' access.log | sort | uniq -c | wc -l

 

0x02: 根据访问URL统计PV

awk '{print $7}' access.log | wc -l

 

0x03: 统计访问最多的URL

根据访问最多的URL来判断哪些业务比较繁忙;也跟根据情况判断是否该业务是否有黑客攻击。

awk '{print $7}' access.log | sort | uniq -c | sort -n -k 1 -r | more
nginx系列:常用利用shell统计日志

 

加一个more命令主要防止URL一屏幕显示不下的情况。

 

0x04:统计访问最频繁的IP

根据访问IP来判断哪些IP操作最多;也可以根据情况判断该IP是不是疑似攻击IP。

awk '{print $1}' access.log | sort | uniq -c | sort -n -k 1 -r | more
nginx系列:常用利用shell统计日志

 

加一个more命令主要防止IP一屏幕显示不下的情况。

 

0x05:根据时间段统计查看日志

具体使用sed或者grep都可以,主要是编写正则表达式

sed:

cat  access.log | sed -n '/29/Aug/2020:[01-23]/p' | more

grep:

 grep '29/Aug/2020:[01-23]' access.log | more

 

0x06:统计当日的的pv和uv

因为是统计当日的pv和uv,所以在编写命令时之前了解一下Nginx的日志格式。日志的默认格式如下:

nginx系列:常用利用shell统计日志

 

默认输出的月份使用英文简写。

pv:

cat  access.log | sed -n /`date "+%d/%b/%Y"`/p | awk '{print $7}' | sort | wc -l

uv:

cat access.log | sed -n /`date "+%d/%b/%Y"`/p |awk '{print $1}' | sort|uniq -c | wc -l

如果使用以上这两个命令发现统计不出来任何数据时,就要检查一下,系统的语言变量LANG是否配置成中文,如果是需要配置成英文

nginx系列:常用利用shell统计日志

 

 

使用以下命令配置成英文

export LANG="en_US.UTF-8"

这时在执行pv和uv命令应该就可以统计出来了,如下图

nginx系列:常用利用shell统计日志

 

 

0x07:获取最耗时的请求时间、url、耗时

下面是获取最耗时的前十个请求,如果想获取全部去掉:head -10

cat access.log | awk '{print $4,$7,$NF}' 
| awk -F '"' '{print $1,$2,$3}' | sort -k3 -rn | head -10

 

0x08:获取每分钟的请求数量

cat access.log  | awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}' 
nginx系列:常用利用shell统计日志

 

可以输出到csv格式文件中

cat access.log  | awk '{print substr($4,14,5)}' 
| uniq -c | awk '{print $2","$1}' > access.csv

 

0x09: 查看某个时间段之间的ip访问个数

例如查看10点到19点的访问ip

grep "2020:1[0-9]" access.log | awk '{ips[$1]+=1} END{for(ip in ips) print ips[ip],ip}' | sort -nr | wc -l

如下图

nginx系列:常用利用shell统计日志

 

查看10点到19点之间的ip访问数,并且访问数>=200的ip

grep '2020:1[0-19]' access.log | 
awk '{ips[$1]+=1}END{for(ip in ips) if(ips[ip]>=200) print ips[ip],ip}' | sort -nr
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>