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

python+pandas分析nginx日志的實(shí)例

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

需求

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

實(shí)現(xiàn)原理

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

實(shí)現(xiàn)

1.準(zhǔn)備工作

#創(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.代碼實(shí)現(xiàn)

#!/usr/local/miniconda2/envs/science/bin/python
#-*- coding: utf-8 -*-
#統(tǒng)計(jì)每個(gè)接口的響應(yīng)時(shí)間
#請?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)計(jì)所需的日志相關(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)計(jì)的字段讀入到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.打印的表格如下:

要點(diǎn)

1. 日志文件比較大的情況下讀取不要用readlines()、readline(),會將日志全部讀到內(nèi)存,導(dǎo)致內(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日志的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Python Allure庫的使用示例教程

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

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

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

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

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

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

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

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

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

最新評論

日喀则市| 海门市| 宾川县| 炎陵县| 景德镇市| 雅江县| 津南区| 霞浦县| 南昌县| 登封市| 嵊州市| 交口县| 延边| 板桥市| 清涧县| 金华市| 四子王旗| 桃园县| 梓潼县| 旌德县| 繁昌县| 铜梁县| 嵩明县| 登封市| 太原市| 武山县| 合川市| 浮梁县| 岚皋县| 汤阴县| 新宾| 遂平县| 北宁市| 精河县| 云霄县| 华宁县| 仪征市| 鲁甸县| 汉沽区| 蒙城县| 衡东县|