Python正则表达式,统计分析nginx访问日志
目标:
1.正则表达式
2.oop编程,统计nginx访问日志中不同IP地址出现的次数并排序
1.正则表达式
#!/usr/bin/env python
# -*- coding: utf-8 -*- import re # match
# 方法一
pattern1 = re.compile(r'hello', re.I) match = pattern1.match('Hello World') if match:
print match.group() # 方法二 m = re.match(r'hello', 'hello world.') print m.group() # search
pattern1 = re.compile(r'World') match = pattern1.search('Hello, hello World.') if match:
print match.group() # split
pattern1 = re.compile(r'\d+')
match = pattern1.split('one1two2three3')
print match
for i in match:
print i # findall
match = pattern1.findall('one1two2three3')
print match # finditer
match = pattern1.finditer('one1two2three3')
for i in match:
print i.group()
•运行代码,测试效果
2.oop编程,统计nginx访问日志中不同IP地址出现的次数并排序
#!/usr/bin/env python
# -*- coding: utf-8 -*- import re class CountPatt(object):
def __init__(self, patt):
self.patt = re.compile(patt)
self.result = {}
def count_patt(self, fname):
with open(fname) as fobj:
for line in fobj:
match = self.patt.search(line)
if match:
key = match.group()
self.result[key] = self.result.get(key, 0) + 1 return self.result def sort(self):
result = []
alist = self.result.items()
for i in xrange(len(alist)):
greater = alist[0]
for item in alist[1:]:
if greater[1] < item[1]:
greater = item
result.append(greater)
alist.remove(greater)
return result if __name__ == "__main__":
httpd_log = '/tmp/access.log'
ip_pattern = r'^(\d+\.){3}\d+'
browser_pattern = r'Chrome|Safari|Firefox'
a = CountPatt(ip_pattern)
print a.count_patt(httpd_log)
print a.sort()
•运行代码,测试效果
handetiandeMacBook-Pro:test xkops$ python test2.py
{'192.168.207.21': 25, '192.168.80.165': 20, '192.168.207.1': 46, '127.0.0.1': 10}
[('192.168.207.1', 46), ('192.168.207.21', 25), ('192.168.80.165', 20), ('127.0.0.1', 10)]
Python正则表达式,统计分析nginx访问日志的更多相关文章
- 使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页
使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页 方法1:linux下使用awk命令 # cat access1.log | awk '{print $1" &q ...
- python脚本分析nginx访问日志
日志格式如下: 223.74.135.248 [11/May/2017:11:19:47 +0800] "POST /login/getValidateCode HTTP/1.1" ...
- 采集并分析Nginx访问日志
日志服务支持通过数据接入向导配置采集Nginx日志,并自动创建索引和Nginx日志仪表盘,帮助您快速采集并分析Nginx日志. 许多个人站长选取了Nginx作为服务器搭建网站,在对网站访问情况进行分析 ...
- python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)【转】
前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下. apach ...
- 按日期切割nginx访问日志--及性能优化
先谈下我们需求,一个比较大的nginx访问日志,根据访问日期切割日志,保存在/tmp目录下. 测试机器为腾讯云机子,单核1G内存.测试日志大小80M. 不使用多线程版: #!/usr/bin/env ...
- 一、基于hadoop的nginx访问日志分析---解析日志篇
前一阵子,搭建了ELK日志分析平台,用着挺爽的,再也不用给开发拉各种日志,节省了很多时间. 这篇博文是介绍用python代码实现日志分析的,用MRJob实现hadoop上的mapreduce,可以直接 ...
- nginx访问日志分析,筛选时间大于1秒的请求
处理nginx访问日志,筛选时间大于1秒的请求 #!/usr/bin/env python ''' 处理访问日志,筛选时间大于1秒的请求 ''' with open('test.log','a+' ...
- Nginx 访问日志轮询切割
Nginx 访问日志轮询切割脚本 #!/bin/sh Dateformat=`date +%Y%m%d` Basedir="/application/nginx" Nginxlog ...
- logstash收集nginx访问日志
logstash收集nginx访问日志 安装nginx #直接yum安装: [root@elk-node1 ~]# yum install nginx -y 官方文档:http://nginx.org ...
随机推荐
- shell 变量说明
变量说明 $$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表. ...
- mysql 中tinytext、text、mediumtext和longtext详解
一.数字类型 类型 范围 说明 Char(N) [ binary] N=1~255 个字元binary :分辨大小写 固定长度 std_name cahr(32) not null VarChar ...
- WPF Template模版之DataTemplate与ControlTemplate的关系和应用【二】
1. DataTemplate和ControlTemplate的关系 学习过DataTemplate和ControlTemplate,你应该已经体会到,控件只是数据的行为和载体,是个抽象的概念,至于它 ...
- 3个同一行div的摆放div
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HDU2066一个人的旅行/最短路问题
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- php 批量导入数据的一种思维
<?php $str="风湿免疫科 消化内科 内分泌科 神经内科 感染内科 心血管内科放疗中心";$arr=explode(' ',$str);$sql="&quo ...
- 线程带参数的Udp接收
//work wk = new work(ReadUdpDate); ParameterizedThreadStart parmThre = new ParameterizedThreadStart( ...
- sessionStorage用于分页,瀑布流和存储用户数据等
在手机网页开发中,会用到分页和瀑布流来分量显示数据.这里会遇到一个问题.当点击某条数据进入详情后,再按手机的返回键会到上一个页面,该页面是重新加载的. 本人在微信里用内置的qq浏览器打开页面,wind ...
- 空指针错误 java.lang.NullPointerException
使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便 不能通过编译,因此使用基本的JAVA数据类型(double,float,boolean,char,int,long) ...
- elasticsearch高级配置之(二)----线程池设置
elasticsearch 配置 线程池 一个Elasticsearch节点会有多个线程池,但重要的是下面四个: 索引(index):主要是索引数据和删除数据操作(默认是cached类型) 搜索 ...