最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python+pandas分析nginx日志的實例

 更新時間:2018年04月28日 15:17:24   作者:man8er  
下面小編就為大家分享一篇python+pandas分析nginx日志的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

需求

通過分析nginx訪問日志,獲取每個接口響應(yīng)時間最大值、最小值、平均值及訪問量。

實現(xiàn)原理

將nginx日志uriuriupstream_response_time字段存放到pandas的dataframe中,然后通過分組、數(shù)據(jù)統(tǒng)計功能實現(xiàn)。

實現(xiàn)

1.準備工作

#創(chuàng)建日志目錄,用于存放日志
mkdir /home/test/python/log/log
#創(chuàng)建文件,用于存放從nginx日志中提取的$uri $upstream_response_time字段
touch /home/test/python/log/log.txt
#安裝相關(guān)模塊
conda create -n science numpy scipy matplotlib pandas
#安裝生成execl表格的相關(guān)模塊
pip install xlwt

2.代碼實現(xiàn)

#!/usr/local/miniconda2/envs/science/bin/python
#-*- coding: utf-8 -*-
#統(tǒng)計每個接口的響應(yīng)時間
#請?zhí)崆皠?chuàng)建log.txt并設(shè)置logdir
import sys
import os
import pandas as pd
mulu=os.path.dirname(__file__)
#日志文件存放路徑
logdir="/home/test/python/log/log"
#存放統(tǒng)計所需的日志相關(guān)字段
logfile_format=os.path.join(mulu,"log.txt")
print "read from logfile \n"
for eachfile in os.listdir(logdir):
 logfile=os.path.join(logdir,eachfile)
 with open(logfile, 'r') as fo:
  for line in fo:
   spline=line.split()
   #過濾字段中異常部分
   if spline[6]=="-":
    pass
   elif spline[6]=="GET":
    pass
   elif spline[-1]=="-":
    pass
   else:
    with open(logfile_format, 'a') as fw:
     fw.write(spline[6])
     fw.write('\t')
     fw.write(spline[-1])
     fw.write('\n')
print "output panda"
#將統(tǒng)計的字段讀入到dataframe中
reader=pd.read_table(logfile_format,sep='\t',engine='python',names=["interface","reponse_time"] ,header=None,iterator=True)
loop=True
chunksize=10000000
chunks=[]
while loop:
 try:
  chunk=reader.get_chunk(chunksize)
  chunks.append(chunk)
 except StopIteration:
  loop=False
  print "Iteration is stopped."
df=pd.concat(chunks)
#df=df.set_index("interface")
#df=df.drop(["GET","-"])
df_groupd=df.groupby('interface')
df_groupd_max=df_groupd.max()
df_groupd_min= df_groupd.min()
df_groupd_mean= df_groupd.mean()
df_groupd_size= df_groupd.size()
#print df_groupd_max
#print df_groupd_min
#print df_groupd_mean
df_ana=pd.concat([df_groupd_max,df_groupd_min,df_groupd_mean,df_groupd_size],axis=1,keys=["max","min","average","count"])
print "output excel"
df_ana.to_excel("test.xls")

3.打印的表格如下:

要點

1. 日志文件比較大的情況下讀取不要用readlines()、readline(),會將日志全部讀到內(nèi)存,導致內(nèi)存占滿。因此在此使用for line in fo迭代的方式,基本不占內(nèi)存。

2. 讀取nginx日志,可以使用pd.read_table(log_file, sep=' ‘, iterator=True),但是此處我們設(shè)置的sep無法正常匹配分割,因此先將nginx用split分割,然后再存入pandas。

3. Pandas提供了IO工具可以將大文件分塊讀取,使用不同分塊大小來讀取再調(diào)用 pandas.concat 連接DataFrame

以上這篇python+pandas分析nginx日志的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python實現(xiàn)替換word中的關(guān)鍵文字(使用通配符)

    python實現(xiàn)替換word中的關(guān)鍵文字(使用通配符)

    今天小編就為大家分享一篇python實現(xiàn)替換word中的關(guān)鍵文字(使用通配符),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Pandas0.25來了千萬別錯過這10大好用的新功能

    Pandas0.25來了千萬別錯過這10大好用的新功能

    這篇文章主要介紹了Pandas0.25來了千萬別錯過這10大好用的新功能,都有哪些新功能,文中給大家詳細介紹,需要的朋友可以參考下
    2019-08-08
  • PyQt5事件處理之定時在控件上顯示信息的代碼

    PyQt5事件處理之定時在控件上顯示信息的代碼

    這篇文章主要介紹了PyQt5事件處理之定時在控件上顯示信息的代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python 添加命令行參數(shù)步驟

    Python 添加命令行參數(shù)步驟

    這篇文章主要介紹了Python 添加命令行參數(shù)步驟,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • python列表:開始、結(jié)束、步長值實例

    python列表:開始、結(jié)束、步長值實例

    這篇文章主要介紹了python列表:開始、結(jié)束、步長值實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python Allure庫的使用示例教程

    Python Allure庫的使用示例教程

    Python Allure庫是一個實用可靠的測試報告框架,它幾乎可以與Python的其他庫和框架無縫集成,利用Python Allure庫,可以輕松生成易于閱讀的測試報告,讓測試變得更加簡單便捷,本文主要介紹Python Allure庫的使用,感興趣的朋友一起看看吧
    2023-12-12
  • Python獲取多進程執(zhí)行的返回值實現(xiàn)

    Python獲取多進程執(zhí)行的返回值實現(xiàn)

    本文主要介紹了Python獲取多進程執(zhí)行的返回值實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 在主機商的共享服務(wù)器上部署Django站點的方法

    在主機商的共享服務(wù)器上部署Django站點的方法

    這篇文章主要介紹了在主機商的共享服務(wù)器上部署Django站點的方法,Django是最具人氣的Python框架,需要的朋友可以參考下
    2015-07-07
  • Python編程不要再使用print調(diào)試代碼了

    Python編程不要再使用print調(diào)試代碼了

    這篇文章主要為大家介紹了Python編程中代碼的調(diào)試技巧,不要只會用print調(diào)試哦~其他的Python調(diào)試技巧,大家來一起共同學習下吧,祝大家多多進步,早日升職加薪
    2021-10-10
  • matplotlib基礎(chǔ)繪圖命令之errorbar的使用

    matplotlib基礎(chǔ)繪圖命令之errorbar的使用

    這篇文章主要介紹了matplotlib基礎(chǔ)繪圖命令之errorbar的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論

巩义市| 吉安市| 五大连池市| 太湖县| 黔西| 沁阳市| 土默特左旗| 饶平县| 正阳县| 秀山| 方正县| 沈丘县| 桃园县| 陇南市| 博罗县| 拉孜县| 余庆县| 宁安市| 专栏| 鄄城县| 额济纳旗| 缙云县| 清远市| 揭阳市| 九龙坡区| 新田县| 肇东市| 鹤庆县| 辉县市| 大同县| 峨眉山市| 望江县| 河池市| 门头沟区| 宣恩县| 长泰县| 黎平县| 茌平县| 奉贤区| 南华县| 怀远县|