通过request log统计网址高峰访问时间段

任务

以小时为单位统计10月份至11月份每天网站访问量的大致分布(以测试环境为例)

获取基础数据

以小时为单位查询一月中服务器处理请求的数量
具体的实现思路是以小时为单位统计request.log中请求的数量,实现上述功能的脚本如下

#!/bin/bash
# 查询request.log中每个小时请求api的数量 
for i in {1..30}  # 11月1日~30日
    do
        for j in {0..23} #
            do
                iTemp=${i};
                jTemp=${j};
                if [[ iTemp -le 9 ]]; then #当不满两位的时候使用0补齐,两位时不做处理
                    iTemp="0${iTemp}"
                fi
                if [[ jTemp -le 9 ]]; then  #当不满两位的时候使用0补齐,两位时不做处理
                    jTemp="0${jTemp}"
                fi
                query="'\[2017/11/${iTemp} ${jTemp}'"  # 查询参数
                echo $query  # 打印日期和小时
                logName="/var/alibaba/logs/*.request.log.2017_11_${iTemp}"
                #echo "$logName"
                #echo "${query}"
                #echo grep "${query}" ${logName} --color
                echo grep "${query}" ${logName} --color | bash | grep "ua=" | wc -l  # app请求量
                echo grep "${query}" ${logName} --color | bash | grep -v "ua=" | wc -l  # 微信请求量
                echo grep "${query}" ${logName} --color | bash | wc -l  #请求总量

            done
    done

统计结果如下

2017/11/01 00
48
300
348
2017/11/01 01
5
113
118
2017/11/01 02
37
64
101
2017/11/01 03
1
12
13
2017/11/01 04
0
109
109
2017/11/01 05
0
28
28
2017/11/01 06
0
429
429
2017/11/01 07
0
528
528

格式化统计数据

将上述查询结果每隔四行合并成一行,使用逗号进行分割每个元素,便于导入excel
合并每小时请求数量的脚本如下:

awk '{printf (NR%4)?$0",":$0"\n"}' mall_ip.java > mall_ip.txt

合并后的文本结果如下:

2017/11/01 00,48,300,348
2017/11/01 01,5,113,118
2017/11/01 02,37,64,101
2017/11/01 03,1,12,13
2017/11/01 04,0,109,109
2017/11/01 05,0,28,28
2017/11/01 06,0,429,429
2017/11/01 07,0,528,528

合并不同月份的数据

如果查询多个月份的数据,可以考虑将不同的文件合并成同一个文件

cat mall_ip.txt mall_nov_ip.txt > mall_ip.txt

将基础数据导入到excel中

将数据合并到同一个文件后可以考虑将文件导入到excel中,A栏对应的是时间,B栏对应app每小时请求数量,C栏表示微信或网页每小时请求数量,D栏表示每小时服务器收到请求的总数量
每小时访问量统计信息

阅读更多

扫码向博主提问

很臭很臭

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • Java
  • 爬虫
  • 遗传算法
  • 作业调度
去开通我的Chat快问
个人分类: project
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭