国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

使用MongoDB分析Nginx日志的方法詳解

2024-08-30 12:25:50
字體:
來源:轉載
供稿:網友

本文我們要從日志文件中找出IP訪問最多的10條記錄,然后判斷其是否合法,從而采取對應的措施。感興趣的朋友們一起來看看吧。

日志解析流程

正常情況下,關于Nginx日志解析的流程如下所示:

一般情況下我們會對要解析的日志提前進行切分,常用的方式是按照日期,然后保存1個星期的日志。然后接下來就是日志的解析了,在這個過程中會使用到一些工具或編程語言,例如awk、grep、perl、python。

最后的入庫和可視化處理一般視業務而定,沒有強制的要求。

日志查詢的解決方案

而關于Nginx日志解析的常用解決方案主要有如下4種方式:

    通過awk和grep進行解析 通過Postgresql外聯表進行日志的映射 通過Python與MongoDB的組合來進行日志查詢 通過ELK這個開源套件進行查詢

其中Postgresql外聯表的方式在之前公司的時候已經使用過,當然是對公司多個3GB大小的日志進行處理。而第1種和第4種解決方案沒有太多的實踐的經驗,這里我們主要來看第2種解決方案。

日志格式

關于日志解析處理,我們比較常用的方式是使用正則表達式來進行匹配,而常用的1個庫是nginxparser,我們可以直接通過pip進行安裝。當然還有其他的方式來進行解析,這個要視業務而定。

在日志解析中,比較重要的是日志的格式,默認情況下Nginx的日志格式如下:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '      '$status $body_bytes_sent "$http_referer" '      '"$http_user_agent" "$http_x_forwarded_for"'      '$upstream_addr $upstream_response_time $request_time; 

下面我們來看實際業務中的1個應用。之前公司有1個搶微信紅包的活動,當然有用戶反映好幾天都無法搶到1個紅包。因此,我們團隊成員認為可能在這個過程中存在作弊的現象,因此便決定對Nginx的日志進行解析。

下面是1條真實的日志的記錄:

101.226.89.14 - - [10/Jul/2016:07:28:32 +0800] "GET /pocketmoney-2016-XiKXCpCK.html HTTP/1.1" 302 231 "-" "Mozilla/5.0 (Linux; Android 5.1; OPPO R9tm Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036548 Safari/537.36 MicroMessenger/6.3.22.821 NetType/WIFI Language/zh_CN" 

日志分析

通過awk進行解析

接著,我們來看下如何使用awk解析出IP訪問最多的記錄,關于awk語法可以參考進行學習:

dog@dog-pc:~$ awk '{a[$1]++}END{for(i in a)print i,a[i]}' nginx.log |sort -t ' ' -k2 -rn|head -n 10 111.167.50.208 26794 183.28.6.143 16244 118.76.216.77 9560 14.148.114.213 3609 183.50.96.127 3377 220.115.235.21 3246 222.84.160.249 2905 121.42.0.16 2212 14.208.240.200 2000 14.17.37.143 1993             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延安市| 明溪县| 东莞市| 灵丘县| 衢州市| 赤峰市| 石首市| 镇原县| 松桃| 鄂尔多斯市| 新和县| 扶绥县| 奉新县| 屏山县| 巨野县| 车险| 辽宁省| 沐川县| 商丘市| 盐山县| 辛集市| 奉化市| 昌宁县| 兰西县| 莲花县| 西安市| 金坛市| 蓬溪县| 昭苏县| 龙陵县| 资阳市| 永川市| 湘潭市| 汉川市| 启东市| 柘城县| 高唐县| 汨罗市| 鄄城县| 舟山市| 宣化县|