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.251") #数据库连接信息
db.autocommit(True)
cur = db.cursor()
cur.execute(‘set names utf8‘)
dict_list = {}
log = re.compile(r"""(?P<ipaddress>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) - - \[(?P<dateandtime>\d{2}\/[a-z]{3}\/\d{4}:\d{2}:\d{2}:\d{2} (\+|\-)\d{4})\] ((\"(GET|POST) )(?P<url>.+)(http\/1\.1")) \<br> (?P<statuscode>\d{3}) (?P<bytessent>\d+) (["](?P<refferer>(\-)|(.+))["]) (["](?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})[,])""", re.IGNORECASE)
with open(‘access.log‘) as logfin:
for line in logfin.readlines():
data = re.search(log, line)
if data:
datadict = data.groupdict()
date = datadict["dateandtime"]
ip = datadict["ip"]
url = datadict["url"]
# ip url 和status当key,每次统计+1
dict_list[(date,ip,url)] = dict_list.get((date,ip,url),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):
print insert #测试用的,可以不要。整个功能是输出一行,然后保存到数据库。
sql = ‘insert loginfo values ("%s","%s","%s","%s")‘ % insert
print sql
cur.execute(sql)

原文地址:https://blog.51cto.com/sedawk/2448865

时间: 2024-10-05 18:10:12

Python葵花宝典-nginx日志分析的相关文章

Python葵花宝典-mysql日志分析

#!/usr/bin/python # -*- coding:utf-8 -*- import re import sys import time import MySQLdb def create_table(): db=MySQLdb.connect(host="localhost", user="root", passwd="mysql", db="slow_log") cursor=db.cursor() cursor

nginx日志分析利器GoAccess(转)

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

nginx日志分析利器GoAccess

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

python 经典语句日志分析

#!/usr/bin/python import re def buffer_line(): buf = open("/etc/sae/buffer_1").read() if not buf: return 0 else: return int(re.findall("^\d*", buf)[0]) def set_last_pos(pos): open("/etc/sae/buffer_1", "w").write(str

ELKR分布式搭建nginx日志分析系统

ELKR分布式搭建nginx日志分析系统 一.名词介绍 1.什么是elk ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana.这三款软件都是开源软件,通常是配合使用. 2.Elasticsearch 2.1.Elasticsearch介绍 Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引

ELK系列二:kibana操作及nginx日志分析图表创建

本文主要介绍kibana4的基本操作,nginx日志分析饼形图.柱形图.客户端地理位置分布图等相关图表创建. 一.kibana基本操作 1.面板介绍 Settings:创建索引 Discover:查询数据,选择左上角的下拉按钮,可以选择相应的索引查找数据 Visualize:统计图表 Dashboard:显示面板,添加相应的图表在面板中 2.创建索引 索引创建时,按照不同的类型建,Time-field要选择@timestamp不选的话在discover面板中不出现时间过滤控件 二.饼形图创建(分

【分享】Nginx日志分析(上)

在很多时候,我们会非常关注网站的访问量,比如网站的日PV是多少.网站某个功能上线之后点击量是多少,像这些东西都是需要从web容器中的访问日志统计出来的,下面我们看一下如何在nginx中统计网站的访问信息 1.设置Nginx访问日志记录格式 在默认情况下,nginx只是记录相关get信息,像post页面是不记录的,所以下面需要修改nginx.conf,让其访问日志记录post等请求信息,在nginx.conf中server段中加入如下信息 log_format  access  '$remote_

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

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

Goaccess---良心nginx日志分析工具

Goaccess是一个非常良心的开源软件,它的良心之处体现在如下方面: 1)安装简单: 2)操作容易: 3)界面酷炫: 安装Goaccess十分的简单,在centos里直接#yum install goaccess,如果yum源里没有goaccess,可以先安装epel.安装epel的方法如下: wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famil