国产探花免费观看_亚洲丰满少妇自慰呻吟_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             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙陵县| 集贤县| 修水县| 河间市| 临泉县| 勐海县| 望都县| 沧源| 青岛市| 壤塘县| 吴桥县| 新乐市| 武夷山市| 长治市| 建瓯市| 汝南县| 合川市| 金堂县| 巴林右旗| 武清区| 上林县| 鸡东县| 巩义市| 阿克苏市| 贞丰县| 行唐县| 甘肃省| 棋牌| 大竹县| 平湖市| 临朐县| 阳曲县| 图片| 三穗县| 南昌县| 宝兴县| 布尔津县| 湘潭县| 色达县| 奉节县| 射洪县|