统计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 ...
随机推荐
- Kconfig SourceCode GDB调试 *****
1.GDB&makefile scripts->Makefile编译FLAGS -g HOSTCC = gcc HOSTCXX = g++ HOSTCFLAGS := HOSTCXXF ...
- javascript 模块化编程----模块的写法
一.原始写法 模板就是实现特定功能的一组方法 只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块. function m1(){ //... } function m2(){ //. ...
- android 手机上运行图像算法
在pc上调试好的图像处理算法想要在android手机上跑一下看看速度需要一下几个步骤 1.建立一个android application,通过ndk调用你写好的图像算法的c/c++ code 2. 然 ...
- poj 3613 Cow Relays【矩阵快速幂+Floyd】
!:自环也算一条路径 矩阵快速幂,把矩阵乘法的部分替换成Floyd(只用一个点扩张),这样每"乘"一次,就是经过增加一条边的最短路,用矩阵快速幂优化,然后因为边数是100级别的,所 ...
- Kafka详解与总结(七)-Kafka producer拦截器(interceptor)
1. 拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于producer而言,interceptor ...
- [读书笔记2]《C语言嵌入式系统编程修炼》
第3章 屏幕操作 3.1 汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能.例如,一个微波炉的LCD上没有必要提供显示&qu ...
- [笔试面试题] 3-C++关键字篇
C/C++关键字篇 语言是编程的基础,掌握基本的语言知识是编程的前提条件.关键字是组成语言的最基本单位,对关键字的理解,有助于编写高质量的代码. 1 static(静态)变量有什么作用? 在函数体 ...
- Uva 796 Critical Links (割边+排序)
题目链接: Uva 796 Critical Links 题目描述: 题目中给出一个有可能不连通的无向图,求出这个图的桥,并且把桥按照起点升序输出(还有啊,还有啊,每个桥的起点要比终点靠前啊),这个题 ...
- 同余模定理 HDOJ 5373 The shortest problem
题目传送门 /* 题意:题目讲的很清楚:When n=123 and t=3 then we can get 123->1236->123612->12361215.要求t次操作后, ...
- go 语言开发环境的安装与配置
go 语言开发环境的安装与配置 编辑器选择 一直以来都是用sublime,但是听说sublime对于golang的插件支持并不是特别完善,并且VS Code只要在自身所带的扩展商店里安装go插件就可以 ...