按小时统计nginx日志请求量

429 阅读1分钟

1.命令

grep '13/Oct/2021'  /root/data/tmp/log/access.log|awk -F  [" "] '{print $4$5 "apisix:" $10 " server:"$(NF-1)}'|cut -c 1-15,28-60|grep 507|sort|uniq -c|sort -nr|head -n 100

2.解释

(1)grep '13/Oct/2021'                                               //查询固定日期
(2)/root/data/log/access.log                                       //日志目录
(3)awk -F  [" "] '{print $4$5 "apisix:" $10 " server:"$(NF-1)}'   //awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。awk 命令默认分隔符为空格或制表符。
(4)cut -c 1-15: 截取awk已经简化后的文本,这里是截取按小时截取时间.
(5)grep 507: 我这里是只查询状态码为507的日志行 
(6)sort:进行排序.
(7)uniq -c:打印每一重复行出现的次数。(并去掉重复行).(按照awk截取的日志格式去统计重复出现的日志行)
(8)sort -nr:按照重复行出现的次序倒序排列。
(9)head -n 100:取排在前100位的IP.