欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

一、腳本運行方式

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

二、腳本內(nèi)容

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
1.分析日志,每行日志按空格切分,取出需要統(tǒng)計的相應(yīng)字段,作為字典的key,遍歷相加
2.使用到字典的get方法,通過定義默認值,避免miss key的錯誤
3.使用列表解析表達式
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.腳本運行結(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òu)成的元組
          # 字典的get方法,對取的key的值加1,第一次循環(huán)時由于字典為空指定的key不存在返回默認值0,因此讀第一行日志時,統(tǒng)計結(jié)果為1
          dic[(ip, url, status)] = dic.get((ip, url, status), 0) + 1
    # 從字典中取出key和value,存在列表中,由于字典的key比較特殊是有多個元素構(gòu)成的元組,通過索引k[#]的方式取出key的每個元素
    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ù)值,取出最多的幾行,默認取出前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īng)典教程》及《Python文件與目錄操作技巧匯總

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

相關(guān)文章

  • python的XIsxWriter操作Excel示例詳解

    python的XIsxWriter操作Excel示例詳解

    這篇文章主要介紹了python的XIsxWriter操作Excel示例詳解,xlsxwriter是一個專門用于創(chuàng)建、寫入和操作Excel文件的Python模塊,它提供了豐富的功能和選項,能夠創(chuàng)建復(fù)雜的Excel文檔,需要的朋友可以參考下
    2023-09-09
  • Python字符串處理的8招秘籍(小結(jié))

    Python字符串處理的8招秘籍(小結(jié))

    這篇文章主要介紹了Python字符串處理的8招秘籍,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python獲取微信企業(yè)號打卡數(shù)據(jù)并生成windows計劃任務(wù)

    python獲取微信企業(yè)號打卡數(shù)據(jù)并生成windows計劃任務(wù)

    由于公司的系統(tǒng)用的是Java版本,開通了企業(yè)號打卡之后又沒有預(yù)算讓供應(yīng)商做數(shù)據(jù)對接,所以只能自己搗鼓這個,以下是個人設(shè)置的一些內(nèi)容,僅供大家參考
    2019-04-04
  • Python網(wǎng)絡(luò)編程之網(wǎng)絡(luò)與通信介紹

    Python網(wǎng)絡(luò)編程之網(wǎng)絡(luò)與通信介紹

    這篇文章主要介紹了Python網(wǎng)絡(luò)編程之網(wǎng)絡(luò)與通信介紹,計算機網(wǎng)絡(luò)就是分布在不同的地區(qū)的計算機與專門的外部設(shè)備通信線路互聯(lián)在一起,
    成為一個功能強,規(guī)模大的網(wǎng)絡(luò)系統(tǒng),本期就主要介紹網(wǎng)絡(luò)與通信的相關(guān)知識和原理,需要的朋友可以參考下
    2023-08-08
  • python簡單爬蟲--get方式詳解

    python簡單爬蟲--get方式詳解

    本篇文章介紹了python爬蟲中g(shù)et和post方法介紹以及cookie作用,對此有興趣的朋友學(xué)習(xí)下,希望能夠給你帶來幫助
    2021-09-09
  • Python中的多行注釋文檔編寫風(fēng)格匯總

    Python中的多行注釋文檔編寫風(fēng)格匯總

    在Python中利用多行注釋編寫小型的程序文檔說明非常方便,而約定俗成的格式也多種多樣,這里我們就進行一下最常見的Python中的多行注釋文檔編寫風(fēng)格匯總:
    2016-06-06
  • Python學(xué)習(xí)之虛擬環(huán)境原理詳解

    Python學(xué)習(xí)之虛擬環(huán)境原理詳解

    本文將帶大家學(xué)習(xí)一下虛擬環(huán)境的相關(guān)知識,虛擬環(huán)境對于剛剛使用Python的初學(xué)者來說使用的概率可能會比較低,但是我們依然要對它有一定的了解??旄S小編一起學(xué)習(xí)一下吧
    2022-03-03
  • Python中跨越多個文件使用全局變量的方法

    Python中跨越多個文件使用全局變量的方法

    全局變量是不屬于函數(shù)范圍的變量,可以在整個程序中使用,這表明全局變量也可以在函數(shù)體內(nèi)部或外部使用,這篇文章主要介紹了Python中跨越多個文件使用全局變量,需要的朋友可以參考下
    2023-09-09
  • Python求兩個圓的交點坐標(biāo)或三個圓的交點坐標(biāo)方法

    Python求兩個圓的交點坐標(biāo)或三個圓的交點坐標(biāo)方法

    今天小編就為大家分享一篇Python求兩個圓的交點坐標(biāo)或三個圓的交點坐標(biāo)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • vscode中配置jupyter的詳細步驟(徹底解決Failed?to?start?the?Kernel問題)

    vscode中配置jupyter的詳細步驟(徹底解決Failed?to?start?the?Kernel問題)

    自從vscode出了支持jupyter?notebook的功能之后,我就再也沒有傻傻的用瀏覽器開過jupyter(問就是vscode好看),下面這篇文章主要給大家介紹了關(guān)于vscode中配置jupyter(徹底解決Failed?to?start?the?Kernel問題)的相關(guān)資料,需要的朋友可以參考下
    2022-12-12

最新評論