python分析nginx日志的ip(中篇二)

对nginx的log进行分析,统计网站url 和status,按照统计数量排序后,保存到mysql数据库中,这个功能本来是和《上篇》中的日志分析是在一起的,运维管理系统中把web统计功能单独分开了

数据库中表结构:

python分析nginx日志的ip(中篇二)

 #!/usr/bin env python
# coding: utf-8
import MySQLdb as mysql
import sys, os

db = mysql.connect(user="root",passwd="123456",db="intest",host="localhost")
db.autocommit(True)
cur = db.cursor()
cur.execute('set names utf8')

dict_list = {}
with open('03.log') as logfin:
    for line in logfin:
        arr = line.split(' ')
        # 获取ip url 和status
        ip = arr[0]
        url = arr[6]
        status = arr[8]
        # ip url 和status当key,每次统计+1
        dict_list[(ip,url,status)] = dict_list.get((ip,url,status),0)+1
    # 转换成列表
    ip_list = [(k[0],k[1],k[2],v) for k,v in dict_list.items()]
    # 按照统计数量排序,排序后保存到数据库。
    for insert in sorted(ip_list,key=lambda x:x[3],reverse=True):#如果只想提取前十行的话可以[:10]即可。
        print insert  #测试用的,可以不要。整个功能是输出一行,然后保存到数据库。
        sql = 'insert loginfo values ("%s","%s","%s","%s")' % insert
        cur.execute(sql)

到数据库输出查询如下123.125.160.217 这个ip经常乱攻击别的服务器曝光一下,如见此ip访问log,请直接拨打911

python分析nginx日志的ip(中篇二)

你可能感兴趣的:(python分析nginx日志的ip(中篇二))