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")) #25/May-2018 22:23:44格式
#print(datetime.strptime('17/Jun/2017:12:11:16',"%d/%b/%Y:%H:%M:%S")) #格式转换
connect=pymysql.connect(
   host='127.0.0.1',
   port=3306,
   user='root',
   password='',
   database='nginxlog',
   charset="utf8"

)
cur = connect.cursor()
sql= "insert into nginxlog(ip,time,methods,source,protocol,status) values(%s,%s,%s,%s,%s,%s)"

with open("portal_ssl.access.log","r")  as  ngfile:
   for line in ngfile:
      _nodes = line.split()
      IP= _nodes[0]
      Time= _nodes[3][1:-1].replace(":"," ",1) #将时间转换为17/Jun/2017 12:43:4格式
      Time = datetime.strptime(Time,"%d/%b/%Y %H:%M:%S")#将时间格式化为2017-06-17 12:43:04
      Methods = _nodes[5][1:]
      Source = _nodes[6]
      Protocol = _nodes[7][:-1]
      Status = _nodes[8]
      print(IP,Time,Methods,Source,Protocol,Status)
      cur.execute(sql,(IP,Time,Methods,Source,Protocol,Status))
      connect.commit()
   connect.close()

SQL语句

create  database   if  not exists  nginxlog     default  charset  utf8;
create table nginxlog (
id int(10)  primary key auto_increment,
ip  varchar(30) not null  default '',
time  datetime,
methods  varchar(10) not null  default '',
source  varchar(200) not null  default '',
protocol varchar(10) not null  default '',
status varchar(10) not null  default ''
)

alter table nginxlog modify column source varchar(400);

原文地址:http://blog.51cto.com/dreamlinux/2120885

时间: 2024-11-06 09:53:15

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",

一次用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/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日志,做个简单的分析: 引子: 开发已经有日志分析平台和工具,但为了查一个问题,需要分析原始日志. 要求: 原始日志的倒数第二个字段不为空且不为'-'的情况下,统计倒数第四个字段不为空且不为'-'的且不重复的个数. python脚本如下: #!/usr/bin/env  python #encoding=utf-8 # nginx_log_analysis.py FileHd = open('aaa.com_access.log-20160506','r')

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

python 读取SQLServer数据插入到MongoDB数据库中

# -*- coding: utf-8 -*-import pyodbcimport osimport csvimport pymongofrom pymongo import ASCENDING, DESCENDINGfrom pymongo import MongoClientimport binascii '''连接mongoDB数据库'''client = MongoClient('10.20.4.79', 27017)#client = MongoClient('10.20.66.10

利用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

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/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.