python分析nginx访问日志

简介:

Web服务器的各种系统管理工作包括了多Nginx/Apache 日志的统计,python使这个任务变得极其简单,下面分享两个小脚本。

一、统计Nginx的客户端缓存的命中率

需要检查你的Nginx服务器拒绝客户请求的频率,服务器拒绝的原因是因为客户缓存中的页面已经更新过了。

解决方案:

当浏览器请求一个在它的缓存中的服务器页面时,浏览器首先会让服务器了解缓存数据,如果客户缓存是更新过的,服务器会返回一个特殊的错误码(而不是再次提供该页面)。下面是在服务器的日志中统计这种现象的代码:

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
import  sys
logfile  =  sys.argv[ 1 ]
def  ClientCache(logfile_path):
         contents  =  open (logfile,  "r" )
         totalrequests  =  0
         cacherequests  =  0
         for  line  in  contents:
                 totalrequests  + =  1
                 if  line.split( " " )[ 8 = =  "304" :
                         cacherequests  + =  1
     print  "Percentage of requests that were client-cached: " str (cacherequests)  +  "%"

运行结果如下:

1
2
[root@chlinux logs]# ./nginx_log.py access.log
Percentage of requests that were client-cached:  17%

讨论:

服务器的服务请求在客户端的缓存中的比例是衡量服务器效能的一个重要的因素。此脚本的代码能帮你从服务器日志中获取这种信息。

此脚本的代码利用循环,每次读取日志文件中的一行,这也是读取文件的常用方式。for循环的主体部分调用split 方法来切割行字符串,它使用一个单空格字符串作为参数,将整行切成了由空格隔开的字段,并组成一个元组,然后它使用索引([8])来获取第9个字段。

二、检查Nginx的访问日志,统计基于每个独立IP地址的点击率

检查Nginx的日志文件,统计基于每个独立IP地址的点击率,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
#coding:utf8
import  re
import  sys
contents  =  sys.argv[ 1 ]
def  NginxIpHite(logfile_path):
         #IP:4个字符串,每个1到3个数字,由点连接
         ipadd  =  r '\.' .join([r '\d{1,3}' ] * 4 )
         re_ip  =  re. compile (ipadd)
         iphitlisting  =  {}
         for  line  in  open (contents):
                 match  =  re_ip.match(line)
                 if  match:
                         ip  =  match.group( )
                         #如果IP存在增加1,否则设置点击率为1
                         iphitlisting[ip]  =  iphitlisting.get(ip,  0 +  1
         print  iphitlisting
NginxIpHite(contents)

运行结果如下:

1
2
[root@chlinux  06 ] # ./nginx_ip.py access_20130617.log
{ '183.3.121.84' 1 '182.118.20.184' 2 '182.118.20.185' 1 '190.52.120.38' 1 '182.118.20.187' 1 '202.108.251.214' 2 '61.135.190.101' 2 '103.22.181.247' 1 '101.226.33.190' 3 '183.129.168.131' 1 '66.249.73.29' 26 '182.118.20.202' 1 '157.56.93.38' 2 '219.139.102.237' 4 '220.181.108.178' 1 '220.181.108.179' 1 '182.118.25.233' 4 '182.118.25.232' 1 '182.118.25.231' 2 '182.118.20.186' 1 '174.129.228.67' 20 }

此脚本返回的是一个字典,其中包含了访问Nginx 服务器的各个IP的点击数,这是通过分析Nginx日志文件的来的.在这个脚本中我们使用正则表达式来获得并同时验证IP,这个方法避使得我们避免了字符串切分操作和长度检查,但我们却不得不负担匹配正则表达式运行的开销。



本文转自1594cqb 51CTO博客,原文链接:http://blog.51cto.com/wolfchen/1224779,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
9月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
657 0
|
9月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
755 0
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
9月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
10月前
|
JSON 缓存 供应链
电子元件 item_search - 按关键字搜索商品接口深度分析及 Python 实现
本文深入解析电子元件item_search接口的设计逻辑与Python实现,涵盖参数化筛选、技术指标匹配、供应链属性过滤及替代型号推荐等核心功能,助力高效精准的电子元器件搜索与采购决策。
|
10月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
636 9

推荐镜像

更多