问题
查看所有服务器日志频繁刷新无法快速定位问题
每次都需要按ctrl+c来终止刷新,查看历史日志
无法确定日志的报错数量的分布,来自哪个接口或者服务
思路
通过
awk
命令,执行split
方法切分当前行的日志拆分后得到
a[NF]
,就是最后的接口地址然后对其进行
?
之后的参数拆分,因为我们只需要接口地址,不关心参数对其进行ASCII排序
uniq -c
去重,并且统计数量sort -n -r
按照数字来进行排序,并且倒序获取报错数量最多的前十个
效果
具体接口路径被隐藏
1000 [REQUEST_URI:/vxxxx/yyy/ssss879 [REQUEST_URI:/xxxx/yyy/ssss878 [REQUEST_URI:/xxxx/yyy/ssss601 [REQUEST_URI:/xxxx/yyy/ssss559 [REQUEST_URI:/xxxx/yyy/ssss490 [REQUEST_URI:/xxxx/yyy/ssss477 [REQUEST_URI:/xxxx/yyy/ssss445 [REQUEST_URI:/xxxx/yyy/ssss394 [REQUEST_URI:/xxxx/yyy/ssss381 [REQUEST_URI:/xxxx/yyy/ssss
代码实现
tail -n 100 /var/log/error/web* |grep -v '==>'| awk '{split($0,a," ");split(a[NF],b,"?");print(b[1])}'|sort|uniq -c | sort -n -r | head -n 10