python处理nginx日志,并统计分析---我这个写的处理时间效率不高,有好方法,请大家指正

实际工作中,恰好需要处理一个nginx日志,做个简单的分析:

引子:

开发已经有日志分析平台和工具,但为了查一个问题,需要分析原始日志。

要求:

原始日志的倒数第二个字段不为空且不为‘-‘的情况下,统计倒数第四个字段不为空且不为‘-‘的且不重复的个数。

python脚本如下:

#!/usr/bin/env  python
#encoding=utf-8
# nginx_log_analysis.py

FileHd = open(‘aaa.com_access.log-20160506‘,‘r‘)
FileText = FileHd.readlines()
FileTextTemp = []
FileTextTempSplit = []
AAA_UID = []
FileHd.close()

for i in range(len(FileText)):
	FileTextTemp.append(FileText[i])
    	FileTextTempSplit.append(FileTextTemp[i].split(‘ ‘))
for i in range(len(FileTextTempSplit)):
	for j in range(len(FileTextTempSplit[i])):
		length = len(FileTextTempSplit[i])
                if FileTextTempSplit[i][length-2] != ‘-‘                and len(FileTextTempSplit[i][length-2]) != 0                and FileTextTempSplit[i][length-4] != ‘-‘                and len(FileTextTempSplit[i][length-4]) != 0:
                     AAA_UID.append(FileTextTempSplit[i][length-4])

‘‘‘
这样的aaa_uid统计是未去重的
STATS_FD = open(‘stats.txt‘,‘w‘)
for AAA_uid in AAA_UID:
    STATS_FD.writelines(aaa_uid+‘\n‘)
STATS_FD.close()
‘‘‘

‘‘‘
这是aaa_uid去重统计
‘‘‘
count = 0
STATS_FD = open(‘stats_uniq.txt‘,‘w‘)
AAA_UID_UNIQ = list(set(AAA_UID))
for aaa_uid in AAA_UID_UNIQ:
    STATS_FD.writelines(aaa_uid+‘\n‘)
    count += 1
STATS_FD.close()
print count

这样处理一个不到280MB的日志,time运行脚本:

time  nginx_log_analysis.py

需要14秒多(一台资源是2核,4GB内存的虚拟机上运行)

时间: 2024-12-28 11:50:46

python处理nginx日志,并统计分析---我这个写的处理时间效率不高,有好方法,请大家指正的相关文章

python分析nginx日志的ip,url,status

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'lvnian' #!/usr/bin env python # coding: utf-8 import MySQLdb as mysql import sys, os db = mysql.connect(user="root",passwd="[email protected]",db="intest",

python切割nginx日志脚本

#!/usr/bin/env python #-*-coding:utf-8-*- #Python nginx cut log 1 import subprocess def mkdir(): subprocess.call('mkdir -pv /usr/local/nginx/logs/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/',shell=Tru

python分析nginx日志

问题:分析nginx日志并找出访问最多10个IP地址的来源以及次数 使用python模块IP 使用方法以及下载地址:https://pypi.python.org/pypi/17MonIP 相关python脚本: #!/usr/bin/env python #coding:utf8 #Auth: lad #date:2016-12-05 #desc:parser the nginx's log,the head of 10  import sys reload(sys) sys.setdefau

一次用bash+python分析NGINX日志的记录

目标: 按文章类型分别统计文章PV,并按PV倒序显示 分析: 从NGINX日志按URL特征可以取出所有文章页URL,并从URL中得到ID 拿ID到数据库中可查询出文章所属类型type 具体操作: 从日志中取出所有详情页URL特征片段,并排重统计每个文章的访问量,将结果另存为m1214.cnt cat access.log | grep -o "GET http://www.***.com/content.* HTTP" | grep -Po "\d(/.*\.html)&qu

python处理nginx日志入库

#usr/bin/evn python#-*- coding: utf-8 -*-import os, sysimport reimport MySQLdb db = MySQLdb.connect(host='192.168.10.94',user='inserter',passwd='****',db='gydata')cursor=db.cursor() log_file=sys.argv[1]print log_filefor line in open(log_file):element

python分析nginx日志的ip(来源)

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import MySQLdb as mysql import datetime import sys, os, urllib2, json db = mysql.connect(user="root",passwd="[email protected]",db="intest",host=&qu

Python读取NGINX日志将其存入数据库

日志数据: #/usr/bin/env python #-*-coding:UTF-8 -*- from  datetime  import  datetime stat_days = [] import   pymysql #print(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) #2018-05-25 22:23:44 #print(datetime.now().strftime("%d/%b-%Y %H:%M:%S&quo

Python葵花宝典-nginx日志分析

#!/usr/bin/python # -*- coding:utf-8 -*- __author__ = 'lvnian' #!/usr/bin env python # coding: utf-8 import MySQLdb as mysql import sys,os,re db = mysql.connect(user="root",passwd="mysql",db="nginx_log",host="192.168.11.

Nginx日志统计方案全过程

本文主要记录下给予python的nginx日志统计过程,主要原因是最近系统经常遭到未知程序的疯狂爬数据,虽然做了防爬机制,但是还是必须要找出是哪些IP访问次数比较多.想到的办法就是通过分析ngxin日志,从而找出这些IP排行即可.具体方案的操作步骤包括: ngxin日志每日切割功能: 设置ngxin的日志格式: 编写python代码在每日切割之前统计下access.log中的IP访问次数并将统计结果录入MongoDB: 编写web查询MongoDB进行统计. 一.nginx日志每日切割功能 该功