python脚本分析nginx访问日志

日志格式如下:

223.74.135.248 - - [11/May/2017:11:19:47 +0800] "POST /login/getValidateCode HTTP/1.1" 404 14227 "http://www.yidianchina.com/login/getValidateCode" "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)"

分别是IP,访问时间,请求方法,请求URI,HTTP协议,响应状态码,响应体大小,referer,客户浏览器。

除了HTTP协议不用截取,其他的都匹配后,存储到数据库,以备后续分析。

#!/usr/bin/python
# -*- coding:utf-8 -*-
import re
import datetime
import time
import MySQLdb as mdb
import json
import urllib
import sys

log = "/root/access_" + (datetime.datetime.now() - datetime.timedelta(days=1)).strftime(‘%Y-%m-%d‘)  + ".log"
line = open(log,‘r‘)
con = mdb.connect(‘localhost‘,‘‘,‘‘,‘database‘,charset="utf8")
cur = con.cursor()

try:
    for i in line:
        matchObj = re.match(r‘(.*)  \[(.*)\] \"(.*) (\/.*) (.*)\" (.*) (.*) (.*) \"(.*)\" \"(.*)\"‘, i, re.I)
        if matchObj != None:
            ip = matchObj.group(1)
            API = "http://ip.taobao.com/service/getIpInfo.php?ip=" + ip
            jsondata = json.loads(urllib.urlopen(API).read())
            address = jsondata[‘data‘][‘country‘] + jsondata[‘data‘][‘region‘] + jsondata[‘data‘][‘city‘] + jsondata[‘data‘][‘isp‘]
            time = matchObj.group(2)
            method = matchObj.group(3)
            request = matchObj.group(4)
            status = int(matchObj.group(6))
            bytesSent = int(matchObj.group(7))
            request_time = float(matchObj.group(8))
            refer = matchObj.group(9)
            agent = matchObj.group(10)
            cur.execute(‘insert into nginx_access_log values("%s","%s","%s","%s","%s",%d,%d,%f,"%s","%s")‘ % (ip,address,time,method,request,status,bytesSent,request_time,refer,agent))
finally:
    line.close()
    cur.close()
时间: 2024-08-27 06:29:29

python脚本分析nginx访问日志的相关文章

采集并分析Nginx访问日志

日志服务支持通过数据接入向导配置采集Nginx日志,并自动创建索引和Nginx日志仪表盘,帮助您快速采集并分析Nginx日志. 许多个人站长选取了Nginx作为服务器搭建网站,在对网站访问情况进行分析时,需要对Nginx访问日志统计分析,从中获取网站的访问量.访问时段等访问情况.传统模式下利用CNZZ等方式,在前端页面插入js,用户访问的时候触发js,但仅能记录访问请求.或者利用流计算.离线统计分析Nginx访问日志,但需要搭建一套环境,并且在实时性以及分析灵活性上难以平衡. 日志服务在支持查询

命令分析nginx访问日志的用法

awk分析日志常用高级使用命令方法 分析访问日志(Nginx为例) 日志格式: '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"' 统计访问IP次数: # awk '{a[$1]++}END{for(i

AWStats分析Nginx访问日志

AWStats是在Sourceforge上发展很快的一个基于Perl的WEB日志分析工具. 它可以统计您站点的如下信息: 访问量(UV),访问次数,页面浏览量(PV),点击数,数据流量等 精确到每月.每日.每小时的数据 访问者国家 访问者IP Robots/Spiders的统计 访客持续时间 对不同Files type的统计信息 Pages-URL的统计 访客操作系统浏览器等信息 其它信息(搜索关键字等等) 下面是AWStats分析Nginx日志的操作步骤: 一.配置nginx日志格式 修改ng

shell脚本:nginx访问日志切割与打包上传

脚本功能: 日志切割类脚本,包含:nginx的访问日志.网关设备.AC设备.认证信息等等日志,都通过ftp上传到相应的服务器进行保存. --------------- #!/bin/bash # Cut and upload nginxlog # by colin # revision on 2016-02-22 ######################################## # 功能说明:该脚本运用于切割与上传nginxlog # # 更新说明: # ############

使用hive分析nginx访问日志方法

以下案例是使用hive分析nginx的访问日志案例,其中字段分隔通过正则表达式匹配,具体步骤如下: 日志格式: 192.168.5.139 - - [08/Jun/2017:17:09:12 +0800] "GET //oportal/static/ui/layer/skin/default/icon.png HTTP/1.1" 200 9905 http://192.168.100.126//oportal/static/ui/layer/skin/layer.css "M

分析nginx大日志文件,python多线程必备! .

还在为分析nginx大日志犯愁吗?也许你会想到用shell处理,1G文件没有问题,上了10G文件,会消耗很久时间,用shell结合python多线程处理没有错. 什么都不用说了,直接上代码了 #!/usr/bin/python #coding:utf8 import threading     #载入多线程模块 import time          #载入时间模块 import os            #载入os模块 import shutil        #载入shutil模块 im

python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)

前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下. apache脚本: ips = {} with open("/root/mail_access_log-20180629") as fh:     for line in fh:         ip = line.split(" ")[0]         if 6 < le

shell 脚本分析Nginx 日志

本脚本分析Nginx 负载均衡器的日志: #!/bin/bash if [ $# -eq 0 ]; then     echo "Error:please specify logfile."     exit 0 else     LOG=$1 fi if [ ! -f $1 ]; then     echo "Sorry,sir. I cat't find this apache log file, pls try again!"     exit 0 fi ##

Nginx 访问日志增长暴增出现尖刀的详细分析

前言:          Nginx日志里面Mobileweb_access.log增长特别大,一天上百兆,将近100W的访问记录,按照我们目前的规模,热点用户才500个左右,就算人人用手机app访问,怎么可能会有这么大的url访问量?以前只是安装使用nginx,还没有抽出时间仔细研究,这回需要彻底的去分析nginx日志了. 1,日志分类 主要2种,一种是错误日志,一种是访问日志,这些配置都在/usr/local/nginx/conf/nginx.conf里面,默认都是打开的,自己也可以选择关闭