python +熊猫分析nginx日志的实例

  

  

通过分析nginx访问日志,获取每个接口响应时间最大值,最小值,平均值及访问量。

  

  

将nginx日志uriuriupstream_response_time字段存放到熊猫的dataframe中,然后通过分组,数据统计功能实现。

  

  

<强> 1。准备工作

        #创建日志目录,用于存放日志   mkdir/home/test/python/log/log   #创建文件,用于存放从nginx日志中提取的uri upstream_response_time美元字段   触摸/home/test/python/log/log.txt   #安装相关模块   conda创建- n科学numpy scipy matplotlib熊猫   #安装生成execl表格的相关模块   pip安装xlwt      

<强> 2。代码实现

        # !/usr/地方/miniconda2/env/科学/bin/python   # - * -编码:utf - 8 - *   #统计每个接口的响应时间   #请提前创建log.txt并设置logdir   导入系统   进口操作系统   熊猫作为pd导入   姆鲁国家公园=os.path.dirname (__file__)   #日志文件存放路径   logdir="/home/测试/python/日志/日志”   #存放统计所需的日志相关字段   logfile_format=os.path.join(姆鲁国家公园,“log.txt”)   打印“读取日志文件\ n”   在os.listdir eachfile (logdir):   日志文件=os.path.join (logdir eachfile)   张开(日志文件,“r”):   的线:   花键=line.split ()   #过滤字段中异常部分   如果样条[6]==?”:   通过   elif花键[6]==暗玫健?   通过   elif花键[1]==?”:   通过   其他:   张开(logfile_format a)弗兰克-威廉姆斯:   fw.write(花键[6])   fw.write (‘\ t’)   fw.write(花键[1])   fw.write (“\ n”)   打印“输出熊猫”   #将统计的字段读入到dataframe中   读者=pd。read_table (logfile_format, 9=\ t,引擎=皃ython”,名字=(“接口”、“reponse_time”),头=None,迭代器=True)   循环=True   chunksize=10000000   块=[]   while循环:   试一试:   块=reader.get_chunk (chunksize)   chunks.append(块)   除了抛出StopIteration:   循环=False   打印“迭代停止。”   df=pd.concat(块)   # df=df.set_index(接口)   # df=df.drop((“得到”,“-”))   df_groupd=df.groupby(接口)   df_groupd_max=df_groupd.max ()   df_groupd_min=df_groupd.min ()   df_groupd_mean=df_groupd.mean ()   df_groupd_size=df_groupd.size ()   #打印df_groupd_max   #打印df_groupd_min   #打印df_groupd_mean   df_ana=pd.concat ([df_groupd_max、df_groupd_min df_groupd_mean, df_groupd_size],轴=1,键=[“max”,“分”,“一般”,“数”))   打印“产出excel”   df_ana.to_excel (test.xls)      

<强> 3。打印的表格如下:

  

 python +熊猫分析nginx日志的实例

  

  

1。日志文件比较大的情况下读取不要用readline (), readline(),会将日志全部读到内存,导致内存占满,因此在此使用fo迭的线代的方式,基本不占内存。

  

2。读取nginx日志,可以使用pd。read_table (log_file, 9=' ',迭代器=True),但是此处我们设置的9月无法正常匹配分割,因此先将nginx用分裂分割,然后再存入熊猫。

  

3。熊猫提供了IO工具可以将大文件分块读取,使用不同分块大小来读取再调用熊猫。concat连接DataFrame

  

以上这篇python +熊猫分析nginx日志的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

python +熊猫分析nginx日志的实例