一種基于NoSQL的大規(guī)模Web日志分析系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種非關(guān)系型的數(shù)據(jù)庫,尤其涉及一種基于NoSQL的大規(guī)模Web日志分析系統(tǒng)。
【背景技術(shù)】
[0002]目前,由于互聯(lián)網(wǎng)的高速發(fā)展,越來越多的Web應(yīng)用被用戶所使用,使得Web日志的數(shù)量也快速增長。隨著Web應(yīng)用訪問量的增大,傳統(tǒng)的數(shù)據(jù)存儲(chǔ)方式已不能滿足當(dāng)前的需求,因而促使了大規(guī)模Web日志分析的產(chǎn)生,但是,大多的Web日志分析系統(tǒng)不能夠方便進(jìn)行存儲(chǔ)、調(diào)取,而且加大了開發(fā)人員的工作效率。
[0003]綜上所述,針對現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提出一種基于NoSQL的大規(guī)模Web日志分析系統(tǒng),以解決現(xiàn)有技術(shù)的不足。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供基于NoSQL的大規(guī)模Web日志分析系統(tǒng),可以高效的對各種格式的日志進(jìn)行處理,不僅減少了開發(fā)人員的工作量同時(shí)提高使用人員的工作效率。
[0005]本發(fā)明為解決其技術(shù)問題所采用的技術(shù)方案是,
[0006]—種基于NoSQL的大規(guī)模Web日志分析系統(tǒng),該系統(tǒng)包括有三部分:分布式存儲(chǔ)單元、分布式計(jì)算單元、用戶界面客戶端;
[0007]分布式存儲(chǔ)單元包含有日志收集模塊、日志存儲(chǔ)模塊,日志存儲(chǔ)模塊中的數(shù)據(jù)庫采用NoSQL數(shù)據(jù)庫MongoDB ;
[0008]分布式計(jì)算單元包含有日志處理模塊、日志分析模塊,日志分析模塊采用Hadoop分布式計(jì)算架構(gòu);
[0009]用戶界面客戶端內(nèi)部包含有可以對Web日志進(jìn)行操作的日志查找單元、索引管理單元、用戶管理單元、系統(tǒng)狀態(tài)單元;
[0010]所述的日志收集模塊為日志分析模塊的基礎(chǔ),系統(tǒng)啟動(dòng)時(shí)的第一個(gè)任務(wù)就是要從Web應(yīng)用站點(diǎn)獲取日志信息,日志收集模塊負(fù)責(zé)從Web應(yīng)用站點(diǎn)接受agent發(fā)送的日志文件,并且重新定向?yàn)楸镜卮鎯?chǔ)的文件,將文件存儲(chǔ)在日志存儲(chǔ)模塊中;
[0011 ] 所述的日志處理模塊對經(jīng)過日志收集模塊后的日志數(shù)據(jù)進(jìn)行分析,由于其格式各不相同,并且可能包含一些無效的數(shù)據(jù),需要對數(shù)據(jù)進(jìn)行統(tǒng)一的清洗,日志收集模塊包含有三個(gè)步驟數(shù)據(jù)清洗,用戶識別,會(huì)話識別;
[0012]所述的日志存儲(chǔ)模塊以單文檔為單位存儲(chǔ)的,可以任意給一個(gè)或一批文檔新增或刪除字段,而不會(huì)對其它文檔造成影響;
[0013]所述的日志分析模塊包括四分步驟:數(shù)據(jù)準(zhǔn)備、Map函數(shù)、Reduce函數(shù)、日志分析。
[0014]進(jìn)一步,所述的日志收集模塊是收集日志信息的過程,日志文件本身是一個(gè)非結(jié)構(gòu)化的文本文件,但是里面又包含了可以結(jié)構(gòu)化出來的信息,因此對于日志文件是最適合采用MongoDB數(shù)據(jù)庫進(jìn)行存儲(chǔ),首先是對日志文件進(jìn)行實(shí)施的解析和入庫,對于任何的日志文件,基本都可以收集日志發(fā)生的時(shí)間,日志類型(info, error),日志等級,關(guān)鍵異常,異常詳細(xì)說明等相關(guān)信息,這些信息在結(jié)構(gòu)化出來后需要持久化的存儲(chǔ)起來,采用MongoDB數(shù)據(jù)庫可以實(shí)現(xiàn)本身在數(shù)據(jù)存儲(chǔ)層的靈活水平擴(kuò)展,為了對日志進(jìn)行收集,需要安裝下面一些組件:Fluentd with MongoDB Plugin、MongoDB> Apache with the Combined LogFormat,通過使用命令 gem install fluent-plugin-mongo 來進(jìn)行安裝。
[0015]進(jìn)一步,日志收集模塊中數(shù)據(jù)清洗時(shí)首先結(jié)合網(wǎng)站的拓?fù)浣Y(jié)構(gòu),通過檢查URL的后綴名,刪除認(rèn)為不相關(guān)的文件,通過分析頁面HTML的源文件中的window, open來尋找對應(yīng)的彈出頁面的URL,從而刪除該頁面,當(dāng)服務(wù)器對用戶發(fā)出的請求相應(yīng)失敗時(shí),Web日志同樣會(huì)記錄這種情況,但這對Web日志挖掘沒有意義,所以在進(jìn)行數(shù)據(jù)清理的時(shí)候,通過日志中的狀態(tài)碼刪除服務(wù)器對請求響應(yīng)失敗的的記錄;
[0016]用戶識別是用來關(guān)聯(lián)用戶請求和服務(wù)器響應(yīng)的過程,當(dāng)用戶訪問某個(gè)Web頁面時(shí),需要對其產(chǎn)生一個(gè)標(biāo)識符,當(dāng)下次該用戶來訪問時(shí),可以對其進(jìn)行識別,通常用戶標(biāo)識符采用用戶的訪問IP ;
[0017]會(huì)話識別是指一個(gè)客戶端瀏覽器與WEB服務(wù)器之間連續(xù)發(fā)生的一系列請求和相應(yīng)過程,WEB服務(wù)器能夠把屬于同一個(gè)會(huì)話中的一系列的請求和響應(yīng)過程關(guān)聯(lián)起來;
[0018]日志收集模塊主要對日志收集模塊的數(shù)據(jù)進(jìn)行數(shù)據(jù)清理,數(shù)據(jù)集成,數(shù)據(jù)變換,數(shù)據(jù)歸約。
[0019]進(jìn)一步,所述的日志存儲(chǔ)模塊包含有storage view:Share view、private view、journal view 日志;
[0020]Share view:位于內(nèi)存上,會(huì)存儲(chǔ)已經(jīng)改變的要刷新到磁盤上的數(shù)據(jù)(臟數(shù)據(jù)),
Share view是唯--個(gè)直接連映射到數(shù)據(jù)庫文件上的view,當(dāng)啟用MongoDB的日志功能時(shí),MongoDB會(huì)請求操作系統(tǒng)把磁盤上的數(shù)據(jù)文件指向share view內(nèi)存視圖上,操作系統(tǒng)不會(huì)數(shù)據(jù)文件加載到share view中,MongoDB在需要時(shí)自己把數(shù)據(jù)文件加載到share view上;
[0021]Private view:位于內(nèi)存上,存儲(chǔ)用于讀請求的數(shù)據(jù),更改請求最先在這執(zhí)行,MongDB 把 Private view 指向 share view ;
[0022]Journal view:存儲(chǔ)已經(jīng)在private cache上發(fā)生更改的數(shù)據(jù),但是會(huì)在更改數(shù)據(jù)刷新到share view (cache)之前存儲(chǔ),Journal view確保了數(shù)據(jù)的持久化,如果更改的數(shù)據(jù)沒有刷新到磁盤上的數(shù)據(jù)文件里,當(dāng)MongoDB起來以后,MongoDB會(huì)把journallog中沒應(yīng)用到數(shù)據(jù)文件中的數(shù)據(jù)回放到share view (cache)中,最終會(huì)應(yīng)用到數(shù)據(jù)文件中。
[0023]進(jìn)一步,所述的日志分析模塊運(yùn)行的步驟為:
[0024]1、數(shù)據(jù)準(zhǔn)備
[0025]從MongoDB數(shù)據(jù)庫中導(dǎo)入原始數(shù)據(jù)到日志分析模塊中;
[0026]2、Map 函數(shù)
[0027]寫一個(gè)map函數(shù),保存在文件mapper, rb中;
[0028]3、Reduce 函數(shù)
[0029]然后是reduce函數(shù),保存在文件reducer, rb中;
[0030]4、日志分析
[0031]利用MapReduce方法處理第一步中獲取的數(shù)據(jù)。
[0032]本發(fā)明的優(yōu)點(diǎn)在于,該系統(tǒng)基于NoSQL的大規(guī)模Web日志分析系統(tǒng)具有非常好的可擴(kuò)展性以及通用性。使用該系統(tǒng)可以高效的進(jìn)行Web日志的處理和分析,通過Hadoop的MapReduce編程模式,對日志進(jìn)行處理,同時(shí)進(jìn)行本系統(tǒng)與單機(jī)處理系統(tǒng)的對比,證明本系統(tǒng)的高效性和可用性,設(shè)計(jì)新穎,是一項(xiàng)很好的設(shè)計(jì)方案,很有市場推廣前景。
【附圖說明】
[0033]下面結(jié)合附圖和【具體實(shí)施方式】來詳細(xì)說明本發(fā)明:
[0034]圖1是本發(fā)明的系統(tǒng)模塊圖;
[0035]圖2是本發(fā)明的架構(gòu)示意圖;
[0036]圖3是本發(fā)明系統(tǒng)用例圖;
[0037]圖4是本發(fā)明日志收集模塊示意圖;
[0038]圖5是本發(fā)明日志處理模塊示意圖;
[0039]圖6是本發(fā)明日志存儲(chǔ)模塊示意圖;
[0040]圖7是本發(fā)明MongoDB存儲(chǔ)視圖;
[0041 ]圖8是本發(fā)明系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D;
[0042]圖9是本發(fā)明Web請求數(shù)來源分析圖;
[0043]圖10是本發(fā)明Web請求類型統(tǒng)計(jì)圖;
【具體實(shí)施方式】
[0044]為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面結(jié)合圖示與具體實(shí)施例,進(jìn)一步闡述本發(fā)明。
[0045]如圖1、圖2、圖3所不,本發(fā)明提出的一種基于NoSQL的大規(guī)模Web日志分析系統(tǒng),該系統(tǒng)包括有三部分:分布式存儲(chǔ)單元、分布式計(jì)算單元、用戶界面客戶端;
[0046]分布式存儲(chǔ)單元包含有日志收集模塊、日志存儲(chǔ)模塊,日志存儲(chǔ)模塊中的數(shù)據(jù)庫采用NoSQL數(shù)據(jù)庫MongoDB ;
[0047]分布式計(jì)算單元包含有日志處理模塊、日志分析模塊,日志分析模塊采用Hadoop分布式計(jì)算架構(gòu);
[0048]用戶界面客戶端內(nèi)部包含有可以對Web日志進(jìn)行操作的日志查找單元、索引管理單元、用戶管理單元、系統(tǒng)狀態(tài)單元;
[0049]所述的日志收集模塊為日志分析模塊的基礎(chǔ),系統(tǒng)啟動(dòng)時(shí)的第一個(gè)任務(wù)就是要從Web應(yīng)用站點(diǎn)獲取日志信息,日志收集模塊負(fù)責(zé)從Web應(yīng)用站點(diǎn)接受agent發(fā)送的日志文件,并且重新定向?yàn)楸镜卮鎯?chǔ)的文件,將文件存儲(chǔ)在日志存儲(chǔ)模塊中;
[0050]所述的日志處理模塊對經(jīng)過日志收集模塊后的日志數(shù)據(jù)進(jìn)行分析,由于其格式各不相同,并且可能包含一些無效的數(shù)據(jù),需要對數(shù)據(jù)進(jìn)行統(tǒng)一的清洗,日志收集模塊包含有三個(gè)步驟數(shù)據(jù)清洗,用戶識別,會(huì)話識別