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

python實(shí)現(xiàn)的分析并統(tǒng)計(jì)nginx日志數(shù)據(jù)功能示例

 更新時(shí)間:2019年12月21日 12:57:34   作者:hnr1017  
這篇文章主要介紹了python實(shí)現(xiàn)的分析并統(tǒng)計(jì)nginx日志數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了Python針對(duì)nginx日志ip、訪問url、狀態(tài)等數(shù)據(jù)的相關(guān)讀取、解析操作技巧,需要的朋友可以參考下

本文實(shí)例講述了python實(shí)現(xiàn)的分析并統(tǒng)計(jì)nginx日志數(shù)據(jù)功能。分享給大家供大家參考,具體如下:

利用python腳本分析nginx日志內(nèi)容,默認(rèn)統(tǒng)計(jì)ip、訪問url、狀態(tài),可以通過修改腳本統(tǒng)計(jì)分析其他字段。

一、腳本運(yùn)行方式

python count_log.py -f med.xxxx.com.access.log

二、腳本內(nèi)容

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
1.分析日志,每行日志按空格切分,取出需要統(tǒng)計(jì)的相應(yīng)字段,作為字典的key,遍歷相加
2.使用到字典的get方法,通過定義默認(rèn)值,避免miss key的錯(cuò)誤
3.使用列表解析表達(dá)式
4.使用sorted函數(shù)排序列表
5.使用argparse傳入?yún)?shù)
6.nginx日志格式:
log_format     access_log
  '$remote_addr - $remote_user [$time_local] $request '
  '"$status" $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$request_time"' '"$upstream_addr"' '"$upstream_response_time"';
7.日志內(nèi)容:
222.xx.xxx.15 - - [07/Dec/2016:00:03:27 +0800] GET /app/xxx/xxx.apk HTTP/1.0 "304" 0 "-" "Mozilla/5.0 Gecko/20100115 Firefox/3.6" "0.055""-""-"
8.腳本運(yùn)行結(jié)果:
('106.xx.xx.46', '/gateway/xxx/user/mxxxxx/submitSelfTestOfSingleQuestion', '"200"', 299)
('182.1xx.xx.83', '/', '"200"', 185)
('222.xx.1xx.15', '/', '"200"', 152)
('125.xx.2xx.58', '/', '"200"', 145)
"""
import argparse
def count_log(filename, num):
  try:
    with open(filename) as f:
      dic = {}
      for l in f:
        if not l == '\n': # 判斷空白行
          arr = l.split(' ')
          ip = arr[0]
          url = arr[6]
          status = arr[8]
          # 字典的key是有多個(gè)元素構(gòu)成的元組
          # 字典的get方法,對(duì)取的key的值加1,第一次循環(huán)時(shí)由于字典為空指定的key不存在返回默認(rèn)值0,因此讀第一行日志時(shí),統(tǒng)計(jì)結(jié)果為1
          dic[(ip, url, status)] = dic.get((ip, url, status), 0) + 1
    # 從字典中取出key和value,存在列表中,由于字典的key比較特殊是有多個(gè)元素構(gòu)成的元組,通過索引k[#]的方式取出key的每個(gè)元素
    dic_list = [(k[0], k[1], k[2], v) for k, v in dic.items()]
    for k in sorted(dic_list, key=lambda x: x[3], reverse=True)[:num]:
      print(k)
  except Exception as e:
    print("open file error:", e)
if __name__ == '__main__':
  parser = argparse.ArgumentParser(description="傳入日志文件")
  # 定義必須傳入日志文件,使用格式-f filename
  parser.add_argument('-f', action='store', dest='filename', required=True)
  # 通過-n傳入數(shù)值,取出最多的幾行,默認(rèn)取出前10
  parser.add_argument('-n', action='store', dest='num', type=int, required=False, default=10)
  given_args = parser.parse_args()
  filename = given_args.filename
  num = given_args.num
  count_log(filename, num)

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python日志操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python實(shí)現(xiàn)Zabbix-API監(jiān)控

    python實(shí)現(xiàn)Zabbix-API監(jiān)控

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)Zabbix-API監(jiān)控,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 深入解析Python中的集合類型操作符

    深入解析Python中的集合類型操作符

    這篇文章主要介紹了深入解析Python中的集合類型操作符,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 利用python實(shí)現(xiàn)漢字轉(zhuǎn)拼音的2種方法

    利用python實(shí)現(xiàn)漢字轉(zhuǎn)拼音的2種方法

    這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)漢字轉(zhuǎn)拼音的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python編解碼問題及文本文件處理方法詳解

    Python編解碼問題及文本文件處理方法詳解

    最近在做一個(gè)項(xiàng)目,因?yàn)槲谋咎幚淼膬?nèi)容是中文,所以不得不面對(duì)python中文處理所帶來的種種困惑,這篇文章主要給大家介紹了關(guān)于Python編解碼問題及文本文件處理方法的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 在Django中創(chuàng)建URLconf相關(guān)的通用視圖的方法

    在Django中創(chuàng)建URLconf相關(guān)的通用視圖的方法

    這篇文章主要介紹了在Django中創(chuàng)建URLconf相關(guān)的通用視圖的方法,Django是Python重多人氣框架中最為著名的一個(gè),需要的朋友可以參考下
    2015-07-07
  • 使用Python刪除PDF文件名中的特定文字

    使用Python刪除PDF文件名中的特定文字

    在處理大量PDF文件時(shí),有時(shí)候我們可能需要對(duì)文件名進(jìn)行批量修改,例如,我們可能需要將文件名中的特定文字刪除或替換,今天,我將向大家介紹如何使用Python編寫一個(gè)簡單的程序,選擇一個(gè)文件夾,并刪除文件名中的指定文字,需要的朋友可以參考下
    2023-09-09
  • 教你用python將數(shù)據(jù)寫入Excel文件中

    教你用python將數(shù)據(jù)寫入Excel文件中

    Python作為一種腳本語言相較于shell具有更強(qiáng)大的文件處理能力,下面這篇文章主要給大家介紹了關(guān)于如何用python將數(shù)據(jù)寫入Excel文件中的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • pytorch下大型數(shù)據(jù)集(大型圖片)的導(dǎo)入方式

    pytorch下大型數(shù)據(jù)集(大型圖片)的導(dǎo)入方式

    今天小編就為大家分享一篇pytorch下大型數(shù)據(jù)集(大型圖片)的導(dǎo)入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python裝飾器常見使用方法分析

    python裝飾器常見使用方法分析

    這篇文章主要介紹了python裝飾器常見使用方法,結(jié)合實(shí)例形式分析了Python裝飾器的功能及三種常見的裝飾模式使用技巧,需要的朋友可以參考下
    2019-06-06
  • pandas創(chuàng)建新Dataframe并添加多行的實(shí)例

    pandas創(chuàng)建新Dataframe并添加多行的實(shí)例

    下面小編就為大家分享一篇pandas創(chuàng)建新Dataframe并添加多行的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評(píng)論

大同市| 兖州市| 万年县| 沾化县| 牟定县| 上栗县| 无为县| 南部县| 山东省| 舞阳县| 延津县| 凤城市| 丹凤县| 绵竹市| 开封市| 邯郸市| 伊川县| 楚雄市| 阿克苏市| 固安县| 蓬莱市| 富锦市| 闽侯县| 紫云| 毕节市| 绍兴市| 增城市| 永登县| 乡城县| 平阳县| 红桥区| 土默特左旗| 凯里市| 新干县| 淮北市| 永安市| 长岭县| 禹州市| 松桃| 浪卡子县| 新闻|