python   实现nginx/apache 日志格式的统计脚本

# !/usr/bin/env python

# -*- coding:utf8 -*-

import sys

import re

import time

import os

def main():

months ={

"jan": 1, "Feb": 2, "Mar": 3, "Apr": 4, "May": 5, "Jun": 6,

"Jul": 07, "Aug": 8, "Sep": 9, "Oct": 10, "Nov": 11, "Dec": 12}

error = ‘请输入正确的时间格式,例如 2016-08-03 10:00:00‘

start = raw_input("请输入要查询的开始时间段如:2016-08-03 10:00:00")

#start = ‘2016-08-03 10:37:00‘

pattern = re.compile("^201[3-6]-(0[0-9]|1[0-2])-([0-2][0-9]|3[0-1])\s([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$")

i_start = re.match(pattern, start)

if i_start == None:

print error

sys.exit(0)

end = raw_input("请输入要查询的结束时间段如:2016-08-03 10:01:00")

#end = ‘2016-08-03 10:38:00‘

i_end = re.match(pattern, end)

if i_end == None:

print error

sys.exit(0)

print "time format is true !"

## 获取格式的时间的定时间戳 ##

start_stamp = time.mktime(time.strptime(start, "%Y-%m-%d %H:%M:%S"))

end_stamp = time.mktime(time.strptime(end, "%Y-%m-%d %H:%M:%S"))

## 处理文件 ###

log_abpath = raw_input("请输入log文件的绝对路径 例如:/var/log/apache2/access.log")

filepath = os.path.exists(log_abpath)

if not filepath:

raise "对不起该目录文件不存在!!"

sys.exit(0)

print "文件存在!!"

f = open(log_abpath, ‘r‘)

#f = open("/var/log/apache2/access.log", "r")

logs = f.readlines()

position = 0

t_logs = []

for log in logs:

position += 1

log = log.split(" ")

log.insert(0, position)

t_logs.append(log)

for t_log in t_logs:

#print type(t_log)

tim = str(t_log[4][1:])

mon = tim[3:6]

#print mon

#print tim

#print type(tim)

#print months[mon]

tim_f = tim.replace(mon, str(months[mon]))

#print tim_f

d = time.strptime(tim_f, "%d/%m/%Y:%H:%M:%S")

stamp = time.mktime(d)

t_log.insert(1, stamp)

# print t_logs

count = 0

for t_log in t_logs:

if t_log[1] > start_stamp < end_stamp:

print "该时间段内的请求日志出现在,"+str(t_log[0])+"行"

count += 1

if count != 0:

print "该段时间内一共出现了%d次请求"%(count)

else:

print "对不起,我已经努力帮你找了,可是找到该段时间的日志信息"

if __name__ == ‘__main__‘:

main()

时间: 2024-10-24 18:54:35

python   实现nginx/apache 日志格式的统计脚本的相关文章

Nginx配置日志格式记录cookie

Nginx配置日志格式记录cookie1. 一般用来做UV统计,或者获取用户token等. 配置方式:  在nginx的配置文件中有个变量:$http_cookie来获取cookie的信息.配置方式很简单,只需要在nginx配置文件的http段,新添加一个log_format就可以了:http{log_format  hehe  '$remote_addr - $remote_user [$time_local] "$request" '               '$status

nginx基础日志格式

nginx基础日志格式log_format main '$remote_addr $remote_user [$time_local] "$request" $request_time''$status $body_bytes_sent "$http_referer" ''$http_user_agent $http_x_forwarded_for $request_time $upstream_response_time $upstream_addr $upstr

nginx之日志格式

nginx的ngx_http_log_module模块是用来定义请求日志格式(编译时添加) 配置段: http 常用log_format指令: $remote_addr, $http_x_forwarded_for 记录客户端IP地址$remote_user 记录客户端用户名称$request 记录请求的URL和HTTP协议$status  记录请求状态$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小: 该变量与Apache模块mod_log_config里的"%B&q

log_format为Nginx设置日志格式

nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式, 另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,一般在nginx的配置文件中日记配置(/usr/local/nginx/conf/nginx.conf). nginx的log_format有很多可选的参数用于指示服务器的活动状态,默认的是:log_format  access  '$remote_addr - $remote_user [$time_local] "$request

nginx自定义日志格式

nginx日志格式的设计 根据开发要求我们要在nginx的日志中打印一些特殊信息,所以必须自定义一些日志, #设置user_id的默认值 set $user_id "0"; #设置user_kind的默认值 set $user_kind "-"; #设置uuid的默认值 set $uuid "_"; www.2cto.com if ( $http_cookie ~* "user_id=([0-9]*)" ){ set $use

python定时器用法 + 获取脚本所在绝对路径 + 定义日志格式 + shell将脚本直接启动到后

python定时器用法 + 获取脚本所在绝对路径 + 定义日志格式 的测试代码 如果用python写好一个有定时器的脚本后,如果脚本里还读了配置文件,那么配置文件路径如果写死的话,有一天要换了存放目录的话,需要修改脚本的配置文件路径,而且每次都要到脚本所在路径用 nohup 启动到后台很麻烦.用 os.path.split(os.path.realpath(sys.argv[0]))[0] 来获取文件所在的绝对路径,配置文件同样扔到和它同级,这样就可以在任意地方启动,一劳永逸~~~ 此用法站在运

nginx访问日志格式

$time_iso8601 ISO8601标准格式下的本地时间.$time_local 通用日志格式下的本地时间. 我们在配置访问日志的时候,一般都是按照默认格式,但是我觉得$time_local换成$time_iso8601更直观一些. log_format  main  '$remote_addr - $remote_user $time_iso8601  "$request" '                     '$status $body_bytes_sent &quo

Python基于nginx访问日志并统计IP访问量

如果想看看Nginx有多少IP访问量,有哪些国家访问,并显示IP地址的归属地分布,python可以结合使用高春辉老师ipip.net[免费版 IP 地址数据库],Shell可以使用nali,我这边主要使用python语言来实现需求,并将查询结果以邮件形式发送,也是为了学习和回顾python语言.很感谢高春辉老师提供的免费版IP地址数据库. 一.Ningx日志如下: 41.42.97.104 - - [26/Feb/2015:03:35:40 -0500] "GET /root/ HTTP/1.1

Nginx/Apache日志分析脚本

1,查看apache进程: ps aux | grep httpd | grep -v grep | wc -l 2,查看80端口的tcp连接: netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l 3,通过日志查看当天ip连接数,过滤重复: cat access_log | grep "20/Oct/2008" | awk '{print $2}' | sort | uniq -c | s