Python開源專案介紹:網站日誌分析工具
日誌分析
日誌分析在web系統中故障排查、效能分析方面有著非常重要的作用。該工具的側重點不是通常的PV,UV等展示,而是在指定時間段內提供細粒度(最小分鐘級別,即一分鐘內的日誌做抽象和彙總)的異常定位和效能分析。
環境安裝
-
Python 3.4+
-
pymongo 3.4.0+
-
MongoDB server
先明確幾個術語
uri
指請求中不包含引數的部分; request_uri
指原始的請求,包含引數或者無引數; args
指請求中的引數部分。(參照nginx中的定義)
uri_abs
和 args_abs
是指對uri和args進行抽象處理後的字串(以便分類),例如:
"/sub/0/100414/4070?channel=ios&version=1.4.5"
經抽象處理轉換為 uri_abs:
"/sub/*/*/*", args_abs:
"channel=*&version=*"
特點
-
提供一個日誌分析的總入口:經由此入口,可檢視某站點所有 server 產生日誌的彙總分析;亦可根據
時間段
和server
兩個維度進行過濾 -
支援對 requesturi,IP 和 responsecode 進行分析,基於
請求數
、響應大小
、響應時間
三個大維度進行分析;另外不同子項又各有特點 -
(核心思想)以某一類 uri 或其對應的各類 args 為維度進行分析,即對 requesturi 進行抽象處理將其分為 uriabs 和 args_abs 兩部分
-
3中提到的抽象歸類思想,預設抽象方法可滿足大部分需求;另外也提供了定製抽象規則的選項,基於此可靈活指定請求中的任何部分是否要抽象處理
-
requesturi 分析能直觀展示哪類請求數量多、哪類請求耗時多、哪類請求佔流量;另外可展示某一類請求在不同粒度裡(minute, tenmin, hour, day)各指標隨時間的分佈變化;也可以針對某一 uriabs 分析其不同 argsabs 各指標的分佈
-
IP 分析將所有請求分為3種來源(fromcdn/proxy, fromreverseproxy, fromclientdirectly),三種來源各自展示其訪問量前 N 的 IP 地址;並且可展示某一 IP 訪問的各指標隨時間的分佈;也可針對某一 IP 分析其產生的不同 uri
-
通過4分位數概念以實現對
響應時間
和響應大小
更準確的描述,因為對於日誌中的響應時間,算數平均值的參考意義不大 -
高效能:本著誰產生的日誌誰處理的思想,日誌分析指令碼loganalyse要在web伺服器上定時執行,因而loganalyse的高效率低資源也是重中之重。經測試,在筆者的伺服器上(磁碟:3*7200rpm組RAID5,千兆區域網),對於不同的日誌檔案,處理速度在20000行/s~30000行/s之間
實現思路
分析指令碼( log_analyse.py
)部署到各臺
web server,並通過 crontab 設定定時執行。 log_analyse.py
利用python的re模組通過正則表示式對日誌進行分析處理,取得 uri
、 args
、 時間當前
、 狀態碼
、 響應大小
、 響應時間
、 server
name
等資訊並進行初步加工然後儲存進MongoDB。檢視指令碼( log_show.py
)作為入口即可對所有web
server的日誌進行分析檢視,至於實時性,取決於web server上 log_analyse.py
指令碼的執行頻率。
前提規範
-
各臺server的日誌檔案按統一路徑存放
-
日誌格式、日誌命名規則保持一致(程式碼中規定格式為xxx.access.log)
-
每天的0點日誌切割
日誌格式決定了程式碼中的正則表示式,是可根據自己情況參考 analyse_config.py
中的正則定義進行定製的)。專案中預定義的日誌格式對應如下:
log_format access '$remote_addr - [$time_local] "$request" '
'$status $body_bytes_sent $request_time "$http_referer" '
'"$http_user_agent" - $http_x_forwarded_for';
對於其他格式的 nginx 日誌或者 Apache 日誌,按照如上原則,稍作就可以使用該工具分析處理。
對於異常日誌的處理
如果想靠空格或雙引號來分割各段的話,主要問題是面對各種不規範的記錄時(原因不一而足,而且也是樣式繁多),無法做到將各種異常都考慮在內,所以專案中採用了 re
模組而不是簡單的 split()
函式的原因。程式碼裡對一些“可以容忍”的異常記錄通過一些判斷邏輯予以處理;對於“無法容忍”的異常記錄則返回空字串並將日誌記錄於檔案。
其實對於上述的這些不規範的請求,最好的辦法是在nginx中定義日誌格式時,用一個特殊字元作為分隔符,例如“|”。這樣就不需要re模組,直接字串分割就能正確的獲取到各段(效能會好些)。
log_show.py使用說明:
幫助資訊
[[email protected] ~]$ log_show --help
Usage:
log_show <site_name>[options] request [distribution [<request>]|detail <uri>]
log_show <site_name>[options] ip [distribution <ip>|detail <ip>]
log_show <site_name>[options] error [distribution <error_code>|detail <error_code>]
Options:
-h --help Showthis screen.
-f --from<start_time>Start time.Format:%y%m%d[%H[%M]],%H and%M is optional
-t --to <end_time>End time.Formatis same as--from
-l --limit <num>Number of lines in output,0 means no limit.[default:5]
-s --server <server>Web server hostname
-g --group_by <group_by>Groupby every minute, every ten minutes, every hour or every day,
valid values:"minute","ten_min","hour","day".[default: hour]
distribution Show distribution(about hits,bytes,time,etc) of:
all or specific 'request', the specific 'ip', the specific 'error_code'in every period.
Periodis specific by--group_by
detail Show details of:
detail 'args' analyse of the specific 'uri'(if it has args);
detail 'uri' analyse of the specific 'ip'or'error_code'
Notice: it's best to put 'request_uri', 'uri' and 'ip' in quotation marks.
所有示例均可通過 -f
, -t
, -s
引數對 起始時間
和 指定server
進行過濾
request子命令
對指定站點今日已入庫的資料進行分析
[[email protected] ~]$ log_show api request -l 3
====================
Total_hits:
相關推薦
Python開源專案介紹:網站日誌分析工具
CodingGo技術社群自由的程式設計學習平臺 日誌分析 日誌分析在web系統中故障排查、效能分析方面有著非常重要的作用。該工具的側重點不是通常的PV,UV等展示,而是在指定時間段內提供細粒度(最小分鐘級別,即一分鐘內的日誌做抽象和彙總)的異常定位和效能分析。 環境安裝
Python開源專案介紹:用zmail簡單地發郵件
CodingGo技術社群自由的程式設計學習平臺傳送郵件是個很簡單的需求,但是在實際的使用中依然碰
mapReduce:網站日誌分析專案案例:資料清洗
一、資料情況分析 1.1 資料情況回顧 該論壇資料有兩部分: (1)歷史資料約56GB,統計到2012-05-29。這也說明,在2012-05-29之前,日誌檔案都在一個檔案裡邊,採用了追加寫入的方式。 (2)自2013-05-30起,每天生成一個數據檔案
Hadoop學習筆記—20.網站日誌分析專案案例(一)專案介紹
網站日誌分析專案案例(一)專案介紹:當前頁面一、專案背景與資料情況1.1 專案來源 本次要實踐的資料日誌來源於國內某技術學習論壇,該論壇由某培訓機構主辦,匯聚了眾多技術學習者,每天都有人發帖、回帖,如圖1所示。圖1 專案來源網站-技術學習論壇 本次實踐的目的就在於通過對該
推薦|23個Python爬蟲開源專案程式碼:爬取微信、淘寶、豆瓣、知乎、微博等
今天為大家整理了23個Python爬蟲專案。整理的原因是,爬蟲入門簡單快速,也非常適合新入門的小夥伴培養信心。所有連結指向GitHub,祝大家玩的愉快 1、WechatSogou [1]– 微信公眾號爬蟲。 基於搜狗微信搜尋的微信公眾號爬蟲介面,可以擴充套件成基於搜狗搜尋的爬
Hadoop學習筆記—20.網站日誌分析專案案例(三)統計分析
網站日誌分析專案案例(三)統計分析:當前頁面一、藉助Hive進行統計1.1 準備工作:建立分割槽表 為了能夠藉助Hive進行統計分析,首先我們需要將清洗後的資料存入Hive中,那麼我們需要先建立一張表。這裡我們選擇分割槽表,以日期作為分割槽的指標,建表語句如下:(這裡關鍵之
IOServer開源專案介紹及原始碼分析
IOServer是國人寫的一個仿MINA的輕量級伺服器框架。最近因為使用MINA的緣故,閱讀了IOServer的原始碼,順便熟悉了J2SE NIO部分。 IOServer的設計目標是手機網遊伺服器框架。支援TCP協議。 這個框架的使用方法和MINA類似;它有一個Proto
Hadoop學習筆記—20.網站日誌分析專案案例(二)資料清洗
網站日誌分析專案案例(二)資料清洗:當前頁面一、資料情況分析1.1 資料情況回顧 該論壇資料有兩部分: (1)歷史資料約56GB,統計到2012-05-29。這也說明,在2012-05-29之前,日誌檔案都在一個檔案裡邊,採用了追加寫入的方式。 (2)自2013-05-
python小專案一:NBA比賽資料分析
該專案來源於實驗樓,我這裡只是記錄下自己做完專案的筆記和總結(實驗樓是py2的程式碼,我則是用的py3)。 專案目的:通過分析之前的比賽資料,得到每個隊伍的狀態的特徵表達,利用機器學習訓練迴歸模型,從而對新的比賽進行預測。 為了掌握並實現這個專案,需瞭解一下幾個問題:
Python基礎語法介紹:面向對象編程
Python 面向對象 面向對象編程 面向對象編程,簡稱OOP:是一種解決軟件服用的設計和編程方法。這種方法把軟件系統中相似的邏輯操作、數據、狀態等以類的形式描述出來,通過對象實例在軟件系統中復用,從而提高軟件開發效率。 類和對象 類:一個事物的抽象,定義了一類事物的屬性和行為。類具有繼承,多態的特性
網站日誌分析對網站優化有什麼幫助
網站日誌能給seo帶來很多意想不到的資料情況,通過分析這些資料可以使優化變得更為主動。網站日誌對蜘蛛和訪客的瀏覽情況的提供了詳細資料。通過分析相關參考資料,可以對蜘蛛行為及網站有更清晰的認識,並且能夠提供相應優化方案。 從不同角度分析可以得出不同結論,比如從蜘蛛行為角度,我們可以看出蜘蛛的瀏覽行為,包括蜘蛛
網站日誌分析對網站優化有什麽幫助
屏蔽 robots 分析 網站構架 ref 效率 打開速度慢 參考 質量 網站日誌能給seo帶來很多意想不到的數據情況,通過分析這些數據可以使優化變得更為主動。網站日誌對蜘蛛和訪客的瀏覽情況的提供了詳細數據。通過分析相關參考數據,可以對蜘蛛行為及網站有更清晰的認識,並且能夠
ELK6.2.3日誌分析工具elasticsearch x-pack6.2.3許可權管理Security模組和內建角色介紹
啟動elasticsearch 1.自定義設定密碼,三個內建賬號根據提示設定密碼 ./bin/x-pack/setup-passwords interactive 2.自動生成密碼 ./bin/x-pack/setup-passwords auto 3.在kibana通過DSL語句設定密碼
python實戰專案示例 :揭祕微信朋友圈
通過python,連線到微信賬號,收集好友性別、城市、個性簽名等公開資訊,使用 Python 進行資料統計與分析,得到你專屬的朋友圈的分析報告! 1、準備工作 1.1 環境配置 編譯環境:Windows10 程式語言:Python3.6 編譯器IDE:Pycharm 瀏覽器工
2018年最火熱的十個Python開源專案!你用過哪些?
過去一個月,MyBridge 從將近 250 個 Python 開源專案中選擇出了最好的 10 個專案: 這些專案在 GitHub 上平均獲得 1140 個 star 專案涵蓋話題包括效能分析、圖表提取、HTTP 框架、HTTP API、程式碼重構和論文爬取等
基於SparkSQL的網站日誌分析實戰
基於SparkSQL的網站日誌分析實戰 使用者行為日誌概述 使用者行為日誌:使用者每次訪問網站時所有的行為資料(訪問、瀏覽、搜尋、點選...) &n
精選Python開源專案Top10!
作者 | MyBridge 譯者 | Linstancy 整理 | Jane 出品 | AI科技大本營 【導讀】過去一個月裡,我們對近 250 個 Python 開源專案進行了排名,並挑選出熱度前 10 的
2018年10月份GitHub上最熱門的Python開源專案
本文我們將和大家介紹 GitHub 上 10 月份最受歡迎的 11 個Python開源專案,在這些專案中,你有在用或用過哪些呢? 1TensorFlow-Course https://github.com/open-source-for-science/TensorFlow-Cour
SEO自學網體系教程第十一節:網站日誌與SEO
首先,說說怎麼檢視網站日誌。以IIS中介軟體為例。 選擇一個網站 --> 高階設定 ,記住這裡的ID 然後到系統盤(日誌檔案一般在系統盤),一般在C:inetpublogsLogFiles
大資料技術學習筆記之Hadoop框架基礎3-網站日誌分析及MapReduce過程詳解
一、回顧 -》Hadoop啟動方式 -》單個程序 sbin/h