统计nginx日志里每五分钟的访问量
#!/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日志里每五分钟的访问量的更多相关文章
- 统计nginx日志里流量
用awk可以,比如,我想统计nginx日志里,今天下午3点0分,这一分钟内,访问的流量(文件的大小) grep "07/Nov/2013:15:00:" *.log|awk '{ ...
- 统计nginx日志里访问次数最多的前十个IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10
- 用shell统计访问日志里每个ip访问次数【转】
今天,要统计一个系统的每个ip访问次数,于是我找到该系统访问日志,并写脚本实现. 访问日志情况: [root@qular ~]# cd /usr/local/nginx/logs/ [root@q ...
- 统计nginx日志
.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l .统计访问URL统计PV awk '{print $7}' access.l ...
- 统计Apache或nginx日志里访问次数最多的前十个IP
1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV awk '{print $7}' access ...
- 通过python统计nginx日志定位php网站响应慢的问题
# 公司网站反映很慢,可能是一些页面的访问方法或者页面引起,通过程序统计nginx访问日志的页面和具体的action方法访问次数以及平均响应时间可以为程序开发的同事提供参考定位具体的代码 # 默认的n ...
- 使用Python 统计nginx日志前十ip访问量并以柱状图显示
脚本内容: import matplotlib.pyplot as plt # nginx_file = '10.6.11.91_access.log-2018-12-27' ip = {} #筛选n ...
- linux统计nginx日志中请求访问量命令
Nginx 三种分配策略:轮询.权重.ip_hash(比如你登录了一个网站,登录信息已经保存到 a 机器,但当你做后续操作时的请求会到 b 机器,那么就获取不到你原来登录的信息,此时你就需要重新登录了 ...
- 统计nginx日志单IP访问请求数排名
下面是我截取一段nginx日志 /Jan/::: +] "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gec ...
随机推荐
- luogu 2627 修建草坪
题目大意: 一个数列,取出一些数使得它们的总和最大且没有k个连续 思路: 首先我们可以找到一个nk的dp dp方程:dp[i]=dp[i-1]+sum[i]-sum[j] (sum[j]尽量小) 然后 ...
- 【BJOI 2018】 求和
[题目链接] 点击打开链接 [算法] 预处理i^k的前缀和,对于每次询问,树上倍增即可 时间复杂度 : O(nk + mlog(n)) [代码] #include<bits/stdc++.h&g ...
- python-----获取ip的两种方法
方法一: 通常使用socket.gethostbyname()方法即可获取本机IP地址,但有时候获取不到(比如没有正确设置主机名称),示例代码如下: import socket # 获取本机计算机名称 ...
- Ural 1517. Freedom of Choice 后缀数组
Ural1517 所谓后缀数组, 实际上准确的说,应该是排序后缀数组. 一个长度为N的字符串,显然有N个后缀,将他们放入一个数组中并按字典序排序就是后缀数组的任务. 这个数组有很好的性质,使得我们运行 ...
- RDA UMF进程 & UMF_IR.C 遥控处理
SIS架构图: SW Structure APP Event Flow :消息分发流程 UMF进程: int umf_main(int argc, char* argv[]) { umf_Init() ...
- Java源码——String
最近在研究java的源代码,但是由于自己英语水平有限,所以想使用中文注释的方式把源码里的方法全部重写 一遍,下面是楼主整理出来的一小部分.我把整体的项目托管到GitHub上了,欢迎大家前去交流学习. ...
- bzoj 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富【记忆化搜索+剪枝】
c[x][y]为从(x,y)到(n,m)的最大值,记忆化一下 有个剪枝是因为y只能+1所以当n-x>m-y时就算x也一直+1也是走不到(n,m)的,直接返回0即可 #include<ios ...
- CSMA/CA协议
802.11中采用CSMA/CA协议来规定多个工作节点共用信道的问题. CSMA/CA的全称是Carrier sense multiple access with collision avoidanc ...
- 【洛谷4721】【模板】分治FFT(CDQ分治_NTT)
题目: 洛谷 4721 分析: 我觉得这个 "分治 FFT " 不能算一种特殊的 FFT ,只是 CDQ 分治里套了个用 FFT (或 NTT)计算的过程,二者是并列关系而不是偏正 ...
- lower_bound和upper_bound函数
lower_bound(ForwardIter first,ForwardIter last,const_TP & val) upper_bound(ForwardIter first,For ...