#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Random_lee
import time
import os
import re class StatusPV(object):
def __init__(self):
self.log_path = '/opt/apache-tomcat-7.0.69/logs/'
self.log_time = time.strftime("%Y-%m-%d")
self.log_name = 'localhost_access_log.%s.txt'%(self.log_time)
self.logfile = os.path.join(self.log_path, self.log_name) def get_filesize(self):
file_size = os.path.getsize(self.logfile)
f = open(self.logfile, 'r')
if file_size > 1000000000:
# 文件大小超过1G从中间读取
f.seek(0, 2)
self.seek= f.tell()/5
else:
self.seek=0
f.close()
def count_pv(self):
self.get_filesize()
if not os.path.exists(self.logfile):
print('error:' + self.logfile + ' not existed.')
return 0
else:
f = open(self.logfile, 'r')
f.seek(self.seek,0)
num = 0
for line in f:
data = time.strftime('%d/%b/%Y:%H:', time.localtime())
if data in line:
expr = re.compile('^(?P<RemoteIP>.*) - - (?P<datatime>.*) (?P<request>".+") (?P<status>\d{3}) (?P<web_size>\d{1,10})')
# 日志格式 10.116.201.71 - - [02/Sep/2018:09:44:13 +0800] "POST /servlet/UpdateJavaFXServlet HTTP/1.0" 200 268
try:
log_info = expr.search(line)
log_info = log_info.groupdict() # 解析日志信息
datatime = log_info["datatime"]
# 取出日志信息中的datatime
datatime = datatime.replace('[', '')
datatime = datatime.replace(']', '')
# 去掉[]
data_time = datatime.split(' ')[0]
# 取出日期时间
time_zone = datatime.split(' ')[1]
# 取出时区
if time_zone == '+0800':
# print(time_zone)
# print(data_time)
ctime = time.strptime(data_time, '%d/%b/%Y:%H:%M:%S')
# 转换为格式化时间 24/Aug/2018:15:42:08
time_stamp = time.mktime(ctime)
# 转换为时间戳
# print(time_stamp)
if time.time() - time_stamp <= 300:
# 观测的时间间隔
num += 1
# print(datatime)
else:
# print("error data_time:%s"%datatime)
pass
else:
print("log format error")
except:
pass
else:
pass
f.close()
print(num) if __name__ == '__main__':
obj_StatusPV = StatusPV()
obj_StatusPV.count_pv()

  

统计nginx日志里每五分钟的访问量的更多相关文章

  1. 统计nginx日志里流量

    用awk可以,比如,我想统计nginx日志里,今天下午3点0分,这一分钟内,访问的流量(文件的大小) grep "07/Nov/2013:15:00:"  *.log|awk '{ ...

  2. 统计nginx日志里访问次数最多的前十个IP

    awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10

  3. 用shell统计访问日志里每个ip访问次数【转】

    今天,要统计一个系统的每个ip访问次数,于是我找到该系统访问日志,并写脚本实现.   访问日志情况: [root@qular ~]# cd /usr/local/nginx/logs/ [root@q ...

  4. 统计nginx日志

    .根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l .统计访问URL统计PV awk '{print $7}' access.l ...

  5. 统计Apache或nginx日志里访问次数最多的前十个IP

    1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV awk '{print $7}' access ...

  6. 通过python统计nginx日志定位php网站响应慢的问题

    # 公司网站反映很慢,可能是一些页面的访问方法或者页面引起,通过程序统计nginx访问日志的页面和具体的action方法访问次数以及平均响应时间可以为程序开发的同事提供参考定位具体的代码 # 默认的n ...

  7. 使用Python 统计nginx日志前十ip访问量并以柱状图显示

    脚本内容: import matplotlib.pyplot as plt # nginx_file = '10.6.11.91_access.log-2018-12-27' ip = {} #筛选n ...

  8. linux统计nginx日志中请求访问量命令

    Nginx 三种分配策略:轮询.权重.ip_hash(比如你登录了一个网站,登录信息已经保存到 a 机器,但当你做后续操作时的请求会到 b 机器,那么就获取不到你原来登录的信息,此时你就需要重新登录了 ...

  9. 统计nginx日志单IP访问请求数排名

    下面是我截取一段nginx日志 /Jan/::: +] "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gec ...

随机推荐

  1. bzoj 2428 均分数据

    题目大意: 已知N个正整数 将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小 求最小均方差 思路: 模拟退火 #include<iostream> #include<c ...

  2. POJ2187 Beauty Contest (旋转卡壳算法 求直径)

    POJ2187 旋转卡壳算法如图 证明:对于直径AB 必然有某一时刻 A和B同时被卡住 所以旋转卡壳卡住的点集中必然存在直径 而卡壳过程显然是O(n)的 故可在O(n)时间内求出直径 凸包具有良好的性 ...

  3. C++中的常量(一) const限定符

    最近在重新看<<C++ Primer>>,第一遍的时候const和constexpr看得并不太懂,这次又有了些更新的理解,当然可能仍然有许多不对的地方... 首先,const限 ...

  4. System.out.println()的含义

    system是java.lang包中定义的一个内置类,在该类中定义了一个静态对象out out是PrintStream类的实例对象 println是PrintStream类中的方法

  5. bzoj 1718: [Usaco2006 Jan] Redundant Paths 分离的路径【tarjan】

    首先来分析一下,这是一张无向图,要求没有两条路联通的点对个数 有两条路连通,无向图,也就是说,问题转化为不在一个点双连通分量里的点对个数 tarjan即可,和求scc还不太一样-- #include& ...

  6. FJOI2019退役记

    day1 不意外地一点都不紧张,早就感觉没有机会了吧 进场非常从容地读完了三道题,开始写t1暴力,接着就开始自闭,不知道该开t2还是t3,最后先开了t3,想了想这不是选两条不相交的链吗,这个暴力不是林 ...

  7. hdu2031

    http://acm.hdu.edu.cn/showproblem.php?pid=2031 #include<stdio.h> #include<math.h> #inclu ...

  8. 最大流增广路(KM算法) HDOJ 1853 Cyclic Tour

    题目传送门 /* KM: 相比HDOJ_1533,多了重边的处理,还有完美匹配的判定方法 */ #include <cstdio> #include <cmath> #incl ...

  9. Android 性能优化(10)网络优化( 6)Optimizing General Network Use

    Optimizing General Network Use This lesson teaches you to Compress Data Cache Files Locally Optimize ...

  10. PHP 小tip .(@)符号和 php if 赋值

    tip 1: 下面介绍一下它的用法. 例如: 复制代码代码如下: function db_connect()//连接数据库 { @$db =mysql_connect('localhost','roo ...