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

對nginx的log進行分析,統計網站url 和status,按照統計數量排序後,保存到mysql數據庫中,這個功能原本是和《上篇》中的日誌分析是在一塊兒的,運維管理系統中把web統計功能單獨分開了python

數據庫中表結構:mysql

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

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

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)sql

到數據庫輸出查詢以下123.125.160.217 這個ip常常亂攻擊別的服務器曝光一下,如見此ip訪問log,請直接撥打911
數據庫

相關文章
相關標籤/搜索