基于python的Nginx日志管理分析系统
溫馨提示:文末有 CSDN 平臺官方提供的學長 Wechat / QQ 名片 :)
1. 項目簡介
????????本項目利用 pandas + sklearn 對 Nginx 的日志數據進行統計分析,并利用 flask 搭建后臺,構建標準 restful 接口,前端利用 bootstrap + echarts + jquery 調用后臺接口,并進行前端的渲染可視化。利用 python 解析 Nginx 的日志信息,包括錯誤日志和正常日志,解析出訪問的 ip、訪問方式、訪問時間、訪問路徑、瀏覽器信息等信息,并從多維度可視化分析。包括:訪問的PV/UV時序分析、訪問的操作系統分析、訪問方法分析 訪問協議分析、訪問狀態碼分析、異常訪問分析、錯誤/攻擊日志等多維度的分析。
2. 功能組成
????????基于python的Nginx日志管理分析系統的功能主要包括:
3.?基于python的Nginx日志管理分析系統
3.1?日志數據解析
????????Nginx的日志數據格式如下:
111.206.106.29 - - [30/Sep/2021:00:00:01 +0800] "GET //news_more.asp?lm2=61 HTTP/1.1" 301 169 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)" 114.246.34.60 - - [30/Sep/2021:00:00:01 +0800] "GET //news_more.asp?lm2=61 HTTP/1.1" 301 169 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)" 111.206.106.29 - - [30/Sep/2021:00:00:01 +0800] "GET //news_more.asp?lm2=66 HTTP/1.1" 301 169 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)" 111.206.106.29 - - [30/Sep/2021:00:00:01 +0800] "GET //news_more.asp?lm2=89 HTTP/1.1" 301 169 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"? ? ? ? 我們讀取日志文件,解析出訪問的 ip、訪問時間、訪問的方法、訪問的路徑、訪問的協議、響應的狀態碼、訪問的客戶端操作系統、日志狀態等信息:?
all_access_logs = [] with open('./data/access.log', 'r', encoding='utf8') as f:for line in tqdm(f.readlines()):line = line.strip()# 解析出訪問的 ip、訪問時間ip_date = line.split('"')[0]ip = ip_date.split('-')[0].strip()date_time = ip_date.split('-')[-1].strip()[1:-1].split(' ')[0]date_time = datetime.datetime.strptime(date_time, '%d/%b/%Y:%H:%M:%S')# 訪問的方法data = line.split('] "')[1].split(' ')method = data[0]# 訪問的路徑path = data[1]# 訪問的協議protocol = data[2][:-1]# 響應的狀態碼code = data[3]# 訪問的客戶端操作系統browser_info = line.split('" "')[-1].lower()# 日志狀態zhuangtai = '正常'if 'windows' in browser_info:sys_os = 'Windows'elif 'mac' in browser_info and 'iphone' not in browser_info:sys_os = 'Mac OS'elif 'iphone' in browser_info:sys_os = 'iPhone'elif 'linux' in browser_info and 'android' not in browser_info:sys_os = 'Linux'elif 'android' in browser_info:sys_os = 'Android'elif 'bot' in browser_info or 'spider' in browser_info:sys_os = 'Web Spider'zhuangtai = '惡意爬蟲攻擊'else:sys_os = '未知'if 'select ' in line.lower() or 'update' in line.lower():print('SQL注入攻擊')zhuangtai = 'SQL注入攻擊'3.2?用戶注冊登錄
3.3 系統首頁
? ? ? ? 首頁中展示 Nginx 日志的整體情況,包括有效訪問數量、錯誤訪問數量、有效日志大小、錯誤日志大小、唯一訪問者數量、訪問協議種類、訪問狀態碼種類和訪問客戶端操作系統等信息:
3.4?網站用戶訪問量統計(PV/UV)
????????PV 分析,PV(Page View)訪問量, 即頁面瀏覽量或點擊量,衡量網站用戶訪問的網頁數量:
。。。。。。sql = 'select ip, date_time from AccessLog'cursor.execute(sql)results = cursor.fetchall()daily_pv = {}daily_uv = {}for res in results:ip, date_time = resdate = ':'.join(date_time.split(':')[:-1])if date not in daily_pv:daily_pv[date] = 0daily_pv[date] += 1if date not in daily_uv:daily_uv[date] = set()daily_uv[date].add(ip)for date in daily_uv:daily_uv[date] = len(daily_uv[date])pv_date = list(daily_pv.keys())uv_date = list(daily_uv.keys())。。。。。。3.5 網站頁面訪問的客戶端操作系統分布情況
? ? ? ? 解析日志記錄,提取訪問的客戶端操作系統,解析統計分析,主要包括:Windows、Android、Web Spider、iPhone、Mac OS、Linux 和未知系統:
3.6?網站頁面訪問方法的分布情況
? ? ? ? 訪問方法主要包括:GET、POST、HEAD和其他類型的訪問方法:
3.7?網站頁面訪問協議的分布情況
? ? ? ? 訪問協議主要包括:HTTP/1.1、HTTP/1.0、RTSP/1.0、PROGRA、SIP/2.0 和其他類型的訪問協議:
3.8?網站頁面訪問狀態碼的分布情況
? ? ? ? 訪問狀態碼主要包括:"301", "200", "404", "304", "403", "206", "500", "302", "400", "152", "148"等:
def get_code_analysis():conn = sqlite3.connect('nginxlog.db')cursor = conn.cursor()sql = 'select code from AccessLog'cursor.execute(sql)results = cursor.fetchall()key_count = {}for res in results:key = res[0]try:float(key)if key not in key_count:key_count[key] = 0key_count[key] += 1except:passoss = list(key_count.keys())return jsonify({'訪問狀態碼': oss, '次數': [key_count[o] for o in oss]})3.9 網站錯誤訪問分析PV分析
3.10?Nginx日志信息分類展示
4. 結論
????????本項目利用 pandas + sklearn 對 Nginx 的日志數據進行統計分析,并利用 flask 搭建后臺,構建標準 restful 接口,前端利用 bootstrap + echarts + jquery 調用后臺接口,并進行前端的渲染可視化。利用 python 解析 Nginx 的日志信息,包括錯誤日志和正常日志,解析出訪問的 ip、訪問方式、訪問時間、訪問路徑、瀏覽器信息等信息,并從多維度可視化分析。包括:訪問的PV/UV時序分析、訪問的操作系統分析、訪問方法分析 訪問協議分析、訪問狀態碼分析、異常訪問分析、錯誤/攻擊日志等多維度的分析。
歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。
技術交流認準下方?CSDN 官方提供的學長 Wechat / QQ 名片 :)
精彩專欄推薦訂閱:
1. Python 畢設精品實戰案例
2. 自然語言處理 NLP 精品實戰案例
3. 計算機視覺 CV 精品實戰案例
總結
以上是生活随笔為你收集整理的基于python的Nginx日志管理分析系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: n的阶乘 计算机程序设计艺术,急求C语言
- 下一篇: RSA加密算法简单介绍以及python实