按小时统计服务器业务日志

上级来了一个需求,统计日志某一天内的日志业务日志访问量,按小时统计。
上去服务器一看,今天的日志达到了8G,有点恐怖,先开始分析吧

less access.log

查看日志的一些格式

[00:00:00.000] [<id=1111>] acc346346ess?u545345r&password
[00:00:00.023] [<id=1111>] access?user&pa346346word
[00:00:00.045] [<id=1111>] ac436346ess?us346346er&password
[00:00:03.000] [<id=2222>] ac634636cess?us6346346er&password
[00:00:03.003] [<id=2222>] ac346346cess?use63463463r&password
[00:00:03.005] [<id=2222>] acce46346ss?user&pa3463463463466ssword
........
........
[14:00:03.000] [<id=4545>] ac634636cess?us6346346er&password
[23:50:03.003] [<id=3232>] ac346346cess?use63463463r&password
[23:00:03.005] [<id=5545>] acce46346ss?user&pa3463463463466ssword

通过观察可以发现

日志可以分为三段 [23:00:03.005] [<id=5545>] acce46346ss?user&pa3463463463466ssword
可以先对日志进行提取,提取时间和id信息

cat  access.log | cut -d ' ' -f 1,2 >1.txt

使用cut把日志利用 空格符号分为三段,把日志信息前面两段 提取出来,输出到1.txt

现在1.txt的文本内容如下

[00:00:00.000] [<id=1111>] 
[00:00:00.023] [<id=1111>] 
[00:00:00.045] [<id=1111>] 
[00:00:03.000] [<id=2222>] 
[00:00:03.003] [<id=2222>] 
[00:00:03.005] [<id=2222>] 
........
........
[14:00:03.000] [<id=4545>] 
[23:50:03.003] [<id=3232>] 
[23:00:03.005] [<id=5545>] 

下面统计总的请求数量,去除重复的id选项

cat 1.txt | awk '{print $2}' |sort|uniq -c| wc -l

awk '{print $2}' 的意思是提取第二列的数据
uniq -c 的意思就是去除重复的id选项 1111 2222 之类的
wc -l 统计总行数

这样就可以统计出总的请求数

总的请求数量统计出来了,如何统计每个小时的请求数量呢

这就需要对日志按照日期进行分割

参考日志小时开头格式 00 01 02 03 之类的

那么利用这个提取出00小时的访问量

cat 1.txt |grep '\['00 |cut -d ' ' -f 2|sort|uniq -c| wc -l

使用grep '\['00 过滤出00时间段的请求,之后在进行提取第二段和去重,之后在统计行数。
就可以统计出具体00一个小时内的请求了。

一天24小时,不可能输入24遍吧,那么就可以用到for循环

创建一个数组,00-23,然后循环这个数组即可

for i in {00..23};do cat 1.txt |grep '\['$i |cut -d ' ' -f 2|sort|uniq -c| wc -l

这样一句话,就实现了循环提取24小时的的日志统计了。

合并一句话的语句

for i in {00..23};do cat  access.log | cut -d ' ' -f 1,2|grep '\['$i |cut -d ' ' -f 2|sort|uniq -c| wc -l

后记:
其实,我的sed和awk用的不是很熟练,如果很熟练的话,应该还有更加简单的统计方式。
这个只能等后续熟练了sed和awk在来优化吧,能用就行了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值