做天考试系统又一次正式应用在了某某考试中,晚上师哥让我用python脚本分析一下日志,计算每秒中的响应请求,并制成曲线图。
今天就着手干。目前为止,我已经把昨天系统的所有时间点上的响应次数统计并按顺序排列下来了。现在就剩曲线图。
就最想说说日志文件:XXXX.log。
打开日志文件,我是用记事本打开的,结果发现并没有换行。重点是换行了,如果你是第一次接触能更easy点。
开头的用户ip地址我还是认得了,所以找啊找的,自己换行出来了几条。冥冥之中看的懂但又不知道有些是什么。
111.19.44.59 - - [14/Jan/2017:00:00:22 +0800] 167789 "GET /p/9 HTTP/1.0" 200 10611 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36"
用户ip 时间 未知数字 GET请求 访问地址 200状态码 被访问页面的体积 操作系统浏览器
大致就是上面这些依次表示过去。在网上看到一个说是统计用户IP的次数,又看了一篇不错的学习教程。明白了,我自己需要的是哪些数据,就是对这个数据获取,操作等。
因此,我要看看每秒的响应请求,那么就是用时间来分析咯。
for l in lines: times = re.compile(r'\d{2}\/\w{3}\/\d{4}:[0-9]{2}:\d{2}:\d{2}') match = times.search(l) if match: time = match.group() if ( arr.has_key(time) ): arr[time] += 1 else: arr.setdefault(time,1)我这里的正则表达式是真的简单。在网上我当时找的是“正则表达式时间格式匹配”,结果铺天盖地各种匹配就出来了。最后我还是用偷鸡的方法取到了。
放开头的时间统计略表尊敬。
14/Jan/2017:00:00:22->1
14/Jan/2017:00:00:23->1
14/Jan/2017:00:01:37->1
14/Jan/2017:00:02:23->2
14/Jan/2017:00:02:27->1
14/Jan/2017:00:02:35->1
14/Jan/2017:00:02:38->2
14/Jan/2017:00:02:51->1
需要什么吗?能用简单方法解决问题吗?keep thinking