python 分析处理nginx日志

   临时帮公司研发同事处理nginx日志,凑合了一个脚本,用着还行,执行效率,还可以吧,一个G的文件,一分钟内就可以处理完成,供大家参考。

#!/usr/bin/env python

import os

import re

import fileinput

logfile = r"/data/log20140904/nginx/192.168.1.50"

#定义正则匹配变量

ip = r"?P<ip>[\d.]*"

timeP = r"""?P<time>\[[^\[\]]*\]"""

request = r"""?P<request>\"

[^\"]*\"

"""

status = r"?P<status>\d+"

bodyBytesSent = r"?P<bodyBytesSent>\d+"

refer = r"""?P<refer>

[^\"]*\"[^\"]*\"

"""

userAgent=r"""?P<userAgent>

\S*

"""

forwardr=r"""?P<forwardr>

[^\"]*

"""

request_time=r"""?P<request_time>

[^\"]*

"""

response_time=r"""?P<response_time>

[^\"]*

"""

#引用变量匹配

p = re.compile(r"(%s)\ -\ -\ (%s)\ (%s)(%s)\ (%s)\ (%s)(%s)\ (%s)" %(ip,timeP,request,status,bodyBytesSent,refer,userAgent,forwardr), re.VERBOSE)

#定义读取目录下文件函数,并分析处理

def logfiledir(filedir):

for file in os.listdir(filedir):

#print file,filedir

backfile = filedir + ‘/‘ + file.split(‘.‘)[0] + ‘.‘ + ‘txt‘

print backfile

logfile = filedir + ‘/‘ + file

#print logfile

if os.path.isfile(logfile):

bf = open(backfile,‘w‘)

for line in open(‘%s‘%logfile,‘r‘).readlines():

#print line,

tline = re.match(r‘^10.168.*.*‘,line,re.M|re.I)

if tline:

print tline.group()

else:

matchs = p.match(line)

#print matchs

if matchs!=None:

allGroups = matchs.groups()

ip = allGroups[0]

time = allGroups[1].split()[0][1:]

request = allGroups[2].split()[1]

status =  allGroups[3]

bodyBytesSent = allGroups[4]

refer = allGroups[5].split(‘:‘,1)[1]

userAgent = allGroups[6]

forwardr = allGroups[7]

# print ip,time,request,status,bodyBytesSent,refer,forwardr,‘\n‘,

bf.writelines(‘%s %s %s %s\n‘%(ip,time,request,refer))

bf.close()

#调用函数

if __name__ == "__main__":

logfiledir(logfile)

时间: 2024-08-10 19:19:16

python 分析处理nginx日志的相关文章

python分析apahce网站日志的例子

有关python实现apahce网站日志分析的方法. 应用到:shell与python数据交互.数据抓取,编码转换 #coding:utf-8 #!/usr/bin/python'''程序说明:apache access.log日志分析 分析访问网站IP 来源情况 日期:2014-01-06 17:01 author:gyh9711 程序说明:应用到:shell与python数据交互.数据抓取,编码转换'''import osimport jsonimport httplibimport cod

今晚九点|如何使用 Python 分析 web 访问日志?

主题:如何使用 Python 分析 Web 访问日志 内容 Python 基础 字符串.字典.文件.时间 Web 访问日志 实战 提问 主讲师:KK 多语言混搭工程师,热爱开源技术,喜欢GET新技能,5年 PHP.Python 项目开发经验,带领团队完成多个中.小型项目开发,对安全.云等多个领域富有浓厚兴趣,擅长于 WEB 安全开发.性能优化.分布式应用开发&设计等多方面,做事认真负责,乐于分享技能,现任 51Reboot.com Python 实战班讲师 任何语言都有使用场景,只有合适和不合适

python——nagios监控nginx日志 request_time

遇到问题:nginx日志包含非常重要的信息.比如upstream_response_time 和request_time.现需求监控改值. 解决问题:编写python脚本,通过nagios check_nrpe 插件完成监控. 前提了解: nginx日志格式: log_format  main  '$remote_addr |$time_local| $request | $status | $body_byte s_sent | $http_referer | $http_user_agent

一个简易的python脚本统计nginx日志里的url及大小

log 日志格式如下 113.221.56.131 - [05/Feb/2015:18:31:19 +0800] " ab.baidu.com GET /media/game/a_.jpg HTTP/1.1" 200 169334 "http://laoma123.ybgj01.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQWubi 133)" " 11

Python分析web访问日志

通用日志格式127.0.0.1 - - [14/May/2017:12:45:29 +0800] "GET /index.html HTTP/1.1" 200 4286远程 - - 主机 IP 请求时间 时区 方法 资源 协议 状态码 发送字节 组合日志格式127.0.0.1 - - [14/May/2017:12:51:13 +0800] "GET /index.html HTTP/1.1" 200 4286 "http://127.0.0.1/&quo

利用Python实现读取Nginx日志,并将需要信息写入到数据库。

#!/usr/bin/env python # coding: utf-8 # Auther:liangkai # Date:2018/6/26 11:26 # License: (C) Copyright 2013-2017, Node Supply Chain Manager Corporation Limited. # Describe: import pymysql import re import datetime # DB variables dbhost = "192.168.18

烂泥:利用awstats分析nginx日志

昨天把nginx的日志进行了切割,关于如何切割nginx日志,可以查看<烂泥:切割nginx日志>这篇文章. 今天打算分析下nginx日志,要分析nginx日志,我们可以通过shell脚本和第三方软件awstats进行分析,在此我们选择的是通过第三方软件awstats进行分析. 要使用awstats分析nginx日志,我们要安装awstats,而在安装awstats之前,我们需要先来介绍下awstats是什么? 一.awstats是什么 awstats是一个免费非常简洁而且强大有个性的基于Pe

ELK安装配置及nginx日志分析

一.ELK简介1.组成ELK是Elasticsearch.Logstash.Kibana三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合使用,而且又都先后归于 Elastic.co 公司名下,故有此简称.Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等.Logstash是一个完全开源的工具,它可以对你的日志进行收集.分析,并将其存储供以后使用.kibana 是一个开源和

goaccess分析nginx日志

最近想用goaccess来分析下nginx日志,但是苦于nginx日志配置格式不是按照正常格式来的,完全是我们按照自己的需求来写的,所以导致goaccess分析不了,需要自己重新定义下格式:但是网上虽然介绍goaccess的很多,但是大多都是就重避轻,将格式的自定义忽略掉,因此我就来把自定义这块说下,希望能够帮助到大家. 首先附上goaccess的官方使用说明及参数介绍,直接安装官方文档来配置才最省事. http://goaccess.io/manual.php#synopsis 1.安装 yu