摘 要: 傳統(tǒng)的日志分析技術(shù)在處理海量數(shù)據(jù)時(shí)存在計(jì)算瓶頸。針對(duì)該問(wèn)題,研究了基于大數(shù)據(jù)技術(shù)的日志分析方案,即由多臺(tái)計(jì)算機(jī)完成日志文件的存儲(chǔ)、分析和挖掘工作;建立了一個(gè)分層的網(wǎng)絡(luò)日志分析系統(tǒng):Syslog完成日志采集,Hadoop負(fù)責(zé)分布式存儲(chǔ)和并行計(jì)算,在MapReduce框架下重新實(shí)現(xiàn)了IP統(tǒng)計(jì)算法。實(shí)驗(yàn)結(jié)果表明,在數(shù)據(jù)密集型計(jì)算中使用大數(shù)據(jù)技術(shù)可以明顯提高算法的執(zhí)行效率和系統(tǒng)的可擴(kuò)展性。
關(guān)鍵詞: 大數(shù)據(jù); 日志采集; MapReduce; 日志分析; IP統(tǒng)計(jì)
中圖分類(lèi)號(hào): TN915?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)02?0039?03
Research on network log analysis system based on big data technology
REN Kai1, DENG Wu2, YU Yan3
( 1. Jinling College, Nanjing University, Nanjing 210089, China; 2. Software Institute, Dalian Jiaotong University, Dalian 116028, China;
3. Chenxian Colleage, Southeast University, Nanjing 210088, China )
Abstract: There is a calculation bottleneck when traditional log analysis technology processes the massive data. To solve this problem, a log analysis solution based on big data technology is proposed in this paper. In this solution, the log file storage, analysis and mining tasks will be decomposed on multiple computers. A layered network log analysis system was established, in which Syslog fulfils the log acquisition, Hadoop is responsible for distributed storage and parallel calculation, and IP statistics algorithm is realized with MapReduce technology. The experimental results show that the use of big data technology in data?intensive computation can significantly improve the execution efficiency of algorithms and scalability of the system.
Keywords: big data; log acquisition; MapReduce; log analysis; IP statistics
0 引 言
隨著信息化建設(shè)的多年發(fā)展和逐層推進(jìn),大型企業(yè)在內(nèi)部網(wǎng)絡(luò)中積累了大量的軟硬件資源,包括:交換機(jī)、路由器、防火墻、PC服務(wù)器、Unix小型機(jī)、各類(lèi)業(yè)務(wù)應(yīng)用系統(tǒng)、中間件、數(shù)據(jù)庫(kù)等。這些計(jì)算機(jī)設(shè)備和網(wǎng)絡(luò)設(shè)備持續(xù)不斷地記錄了大量的日志。日志文件作為硬件設(shè)備、系統(tǒng)和用戶行為的記錄工具,在監(jiān)控網(wǎng)絡(luò)運(yùn)行情況、調(diào)查設(shè)備故障、保護(hù)系統(tǒng)安全等方面有著舉足輕重的作用[1]。通過(guò)分析日志文件,能夠獲取有關(guān)設(shè)備故障、用戶異常行為、網(wǎng)絡(luò)運(yùn)行狀況等信息,有利于及時(shí)處置網(wǎng)絡(luò)安全事件和軟硬件故障,保證網(wǎng)絡(luò)的穩(wěn)定性和安全性。
在大型企業(yè)的內(nèi)部網(wǎng)絡(luò)中,日志源眾多、格式不一、體量龐大,長(zhǎng)期存儲(chǔ)的數(shù)據(jù)量可達(dá)TB或者PB級(jí)別。傳統(tǒng)的日志分析系統(tǒng)使用單機(jī)技術(shù)處理海量數(shù)據(jù),在存儲(chǔ)和計(jì)算兩方面都遇到了瓶頸。為了解決這些問(wèn)題,近年來(lái)大數(shù)據(jù)技術(shù)被廣泛應(yīng)用。作為Google MapReduce[2]和GFS[3]技術(shù)的開(kāi)源實(shí)現(xiàn),Apache Hadoop集成了數(shù)據(jù)存儲(chǔ)[4]、數(shù)據(jù)處理、系統(tǒng)管理等功能,已經(jīng)成為大數(shù)據(jù)領(lǐng)域事實(shí)上的標(biāo)準(zhǔn)[5],特別適合于大數(shù)據(jù)的搜索、挖掘、分析和機(jī)器學(xué)習(xí)[6]。
本文提出分層的網(wǎng)絡(luò)日志分析系統(tǒng),并詳述了日志采集流程和實(shí)現(xiàn)方案,之后提出了一種基于MapReduce編程模型的IP統(tǒng)計(jì)算法,最后進(jìn)行算法實(shí)驗(yàn)和效果分析。實(shí)驗(yàn)證明,基于大數(shù)據(jù)的日志分析技術(shù)具有更好的時(shí)效性和可擴(kuò)展性。
1 網(wǎng)絡(luò)日志分析系統(tǒng)
1.1 功能架構(gòu)
在大數(shù)據(jù)系統(tǒng)中,日志是廣泛使用的數(shù)據(jù)采集方法之一[7]。它具有4V特征[8]:Volume,數(shù)據(jù)體量巨大;Variety,數(shù)據(jù)類(lèi)型多樣;Velocity,數(shù)據(jù)生成快速;Value,數(shù)據(jù)價(jià)值大但密度低。為了應(yīng)對(duì)日志的大數(shù)據(jù)特性,結(jié)合日志數(shù)據(jù)的存儲(chǔ)和分析流程,本文給出網(wǎng)絡(luò)日志分析系統(tǒng)的分層架構(gòu),由日志源層、采集層、存儲(chǔ)層、業(yè)務(wù)層、顯示層組成,如圖1所示。
圖1 分層的網(wǎng)絡(luò)日志分析系統(tǒng)
日志源層:由企業(yè)內(nèi)網(wǎng)中的計(jì)算機(jī)軟硬件和網(wǎng)絡(luò)設(shè)備構(gòu)成,它們?cè)丛床粩嗟漠a(chǎn)生各種日志記錄。
采集層:由一個(gè)或多個(gè)日志采集服務(wù)器構(gòu)成,主要完成日志記錄的接收和存儲(chǔ)。由于HDFS無(wú)法有效處理大量小文件,日志服務(wù)器需要將較小的日志文件歸檔合并成大文件后,再發(fā)送給存儲(chǔ)層。
存儲(chǔ)層:存儲(chǔ)層負(fù)責(zé)對(duì)原始日志和統(tǒng)計(jì)分析結(jié)果進(jìn)行分布式存儲(chǔ)。它的底層采用HDFS文件系統(tǒng),配置海量的存儲(chǔ)空間;dfs.replication參數(shù)一般設(shè)置為3(也無(wú)需設(shè)置更大),保持?jǐn)?shù)據(jù)的多個(gè)副本,這樣能夠可靠、持久的存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)。基于HDFS的HBase用于存儲(chǔ)結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),作為Google Bigtable[9]的開(kāi)源實(shí)現(xiàn),它的列式存儲(chǔ)特性能向上層提供更好的并行計(jì)算支持。原始日志主要存儲(chǔ)到HDFS中,統(tǒng)計(jì)分析結(jié)果既可以存入HDFS也可以存入HBase中,HBase在滿足大數(shù)據(jù)存儲(chǔ)的同時(shí),能夠提供低延遲的數(shù)據(jù)訪問(wèn)。
業(yè)務(wù)層:由各種日志分析程序構(gòu)成,主要解決日志數(shù)據(jù)如何統(tǒng)計(jì)分析的問(wèn)題。根據(jù)統(tǒng)計(jì)分析作業(yè)定制的功能需求,主要包括三種形式:MapReduce作業(yè)、Streaming作業(yè)和Hive作業(yè)。為了利用云計(jì)算并行執(zhí)行的特點(diǎn),傳統(tǒng)的數(shù)據(jù)挖掘算法(如統(tǒng)計(jì)、歸并規(guī)則、分類(lèi)、聚類(lèi))必須使用MapReduce編程模型重新設(shè)計(jì)實(shí)現(xiàn)(稱(chēng)為MapReduce化)。Steaming作業(yè)可以使用Python、awk等語(yǔ)言開(kāi)發(fā)MapReduce程序。Hive是Facebook開(kāi)發(fā)的構(gòu)建在HDFS之上的數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用,它提供類(lèi)似于SQL的HiveQL(Hive Query Language)查詢(xún)分析功能,經(jīng)過(guò)對(duì)HiveQL語(yǔ)句進(jìn)行解析、轉(zhuǎn)換、優(yōu)化,最終生成多個(gè)MapReduce任務(wù)運(yùn)行,提供部分與傳統(tǒng)RDBMS一樣的表格查詢(xún)特性和分布式計(jì)算特性,使用者不用開(kāi)發(fā)程序即可完成一些即查即用的臨時(shí)統(tǒng)計(jì)分析任務(wù)。
顯示層:對(duì)業(yè)務(wù)層的處理結(jié)果進(jìn)行再處理并通過(guò)界面顯示。業(yè)務(wù)層的處理結(jié)果仍然存放在Hadoop集群中(HDFS或HBase),需要進(jìn)行提取、分析、轉(zhuǎn)換,最終以圖、表、文字等形式展現(xiàn)到前端頁(yè)面。
日志數(shù)據(jù)的異地多備份存儲(chǔ)和管理功能由日志源層、采集層、存儲(chǔ)層完成;日志分析和數(shù)據(jù)挖掘功能由存儲(chǔ)層、業(yè)務(wù)層、顯示層完成。存儲(chǔ)層和業(yè)務(wù)層依托Hadoop平臺(tái)實(shí)現(xiàn)分布式存儲(chǔ)和并行計(jì)算,物理形態(tài)采用Master/Slave工作結(jié)構(gòu)。
1.2 日志采集與存儲(chǔ)
大型企業(yè)的內(nèi)網(wǎng)中存在各類(lèi)軟硬件設(shè)備,這些設(shè)備每天產(chǎn)生大量日志,日志種類(lèi)多樣、格式不一、存儲(chǔ)分散。有些設(shè)備以隊(duì)列模式處理日志文件,受限于文件大小,舊記錄會(huì)被新紀(jì)錄覆蓋;如果出現(xiàn)磁盤(pán)損壞、病毒、木馬攻擊等意外事件,也有可能導(dǎo)致日志數(shù)據(jù)丟失;日志的分散存放使得管理員需要反復(fù)登錄不同的系統(tǒng)才能了解設(shè)備的運(yùn)行狀況,嚴(yán)重影響工作效率,網(wǎng)絡(luò)規(guī)模較大、設(shè)備較多時(shí),監(jiān)控工作幾乎無(wú)法完成。
為了解決上述問(wèn)題,同時(shí)考慮到安全性、可靠性、便捷性,日志采集層需要將所有日志文件匯總、統(tǒng)一存儲(chǔ)、妥善保管,并能為統(tǒng)計(jì)、分析、查詢(xún)等上層業(yè)務(wù)提供便利。本系統(tǒng)采用Syslog日志服務(wù)器完成日志數(shù)據(jù)的采集與存儲(chǔ)功能。
Syslog日志系統(tǒng)是加州大學(xué)伯克利分校BSD Unix的日志工業(yè)標(biāo)準(zhǔn)協(xié)議[10]。絕大部分計(jì)算機(jī)系統(tǒng)和硬件設(shè)備都支持Syslog協(xié)議,許多日志函數(shù)庫(kù)(如Log4j)和第三方軟件(如Tomcat)也已采納Syslog協(xié)議。Syslog協(xié)議支持純文本的標(biāo)準(zhǔn)日志格式,對(duì)于設(shè)備發(fā)生的一次事件,Syslog產(chǎn)生一行記錄,它使用UDP傳輸協(xié)議,通過(guò)默認(rèn)的514端口,將設(shè)備的日志數(shù)據(jù)推送到遠(yuǎn)端的日志服務(wù)器,日志服務(wù)器接收日志數(shù)據(jù)并寫(xiě)入文件系統(tǒng)。
絕大部分的日志源設(shè)備使用Syslog協(xié)議不需要安裝軟件,只須進(jìn)行簡(jiǎn)單配置:
(1) Unix/Linux系統(tǒng)在“/etc/syslog.conf”文件中配置syslog日志服務(wù)器的IP地址;
(2) 網(wǎng)絡(luò)設(shè)備(交換機(jī)、路由器)的日志一般都能支持Syslog協(xié)議,只要打開(kāi)日志模塊的遠(yuǎn)端發(fā)送功能,正確配置日志服務(wù)器的IP地址;
(3) 安全設(shè)備(如防火墻)也都采用Syslog協(xié)議,開(kāi)啟syslog功能并設(shè)置日志服務(wù)器IP地址即可;
(4) Windows系統(tǒng)需要借助第三方軟件Evtsys完成日志轉(zhuǎn)發(fā)功能。
通過(guò)設(shè)置一個(gè)Syslog日志服務(wù)器,可以將不同設(shè)備發(fā)送的日志,統(tǒng)一匯總到一個(gè)獨(dú)立的位置,并進(jìn)行進(jìn)一步的清洗、分類(lèi)、統(tǒng)一格式等預(yù)處理操作,當(dāng)需要統(tǒng)計(jì)、分析日志時(shí),可以很快地推送到HDFS中,作為業(yè)務(wù)層的輸入數(shù)據(jù)。
2 并行日志分析算法
DoS及DDoS攻擊會(huì)使服務(wù)器高負(fù)荷運(yùn)轉(zhuǎn),最終導(dǎo)致正常服務(wù)癱瘓。對(duì)服務(wù)器的訪問(wèn)日志中各IP地址的請(qǐng)求次數(shù)進(jìn)行統(tǒng)計(jì),獲取請(qǐng)求次數(shù)頻繁的IP地址是檢測(cè)攻擊源、防御攻擊的有效方法。服務(wù)器的訪問(wèn)日志包含較多數(shù)據(jù)信息,日志文件通常達(dá)到GB數(shù)量級(jí),傳統(tǒng)的單機(jī)模式統(tǒng)計(jì)算法時(shí)效性很差。這里借助于MapReduce并行計(jì)算的特點(diǎn),將傳統(tǒng)單機(jī)算法改進(jìn)為并行算法,稱(chēng)之為基于MapReduce的IP統(tǒng)計(jì)算法(IP Statistics base MapReduce,IPStats?MR)。
日志數(shù)據(jù)以文件形式存入HDFS,Map函數(shù)對(duì)每一行日志數(shù)據(jù)進(jìn)行分析,提取申請(qǐng)?jiān)L問(wèn)服務(wù)器的源IP,輸出的Key/Value是:SourceIP/1。Reduce的輸入是相同的SourceIP,將其累加,輸出的Key/Value是:SourceIP/n,它表示同一個(gè)IP對(duì)服務(wù)器的請(qǐng)求次數(shù)。IPStats?MR算法步驟如下:
map( key, value )
emit(value.SourceIP , 1)
reduce( key, values[v1; v2; ...] )
i=0
for val in values[v1; v2; ...]
i++
emit(key , i)
3 實(shí)驗(yàn)與效果評(píng)價(jià)
網(wǎng)絡(luò)日志分析系統(tǒng)由8臺(tái)普通PC(Intel i5 3.2 GHz CPU、4 GB RAM)組成,其中1臺(tái)為Master,6臺(tái)為Slave,1臺(tái)為Syslog日志服務(wù)器。安裝軟件為:CentOS 5.5,Hadoop 1.0.2,HBase 0.92.1,Hive 0.9.0。
實(shí)驗(yàn)1:加速比實(shí)驗(yàn)
該實(shí)驗(yàn)衡量并行算法的執(zhí)行效果和性能。首先定義加速比(Speedup)的概念,如式(1)所示:
[Sn=T1Tn] (1)
式中:Tn是IPStats?MR算法在n個(gè)Slave組成的集群上運(yùn)行的時(shí)間;T1是只啟動(dòng)1個(gè)Slave時(shí)算法所運(yùn)行的時(shí)間。
分別完成4組實(shí)驗(yàn):?jiǎn)?dòng)1個(gè),2個(gè),4個(gè)或6個(gè)Slave。實(shí)驗(yàn)結(jié)果如圖2所示,它顯示了數(shù)據(jù)集固定時(shí),不斷增加計(jì)算節(jié)點(diǎn)對(duì)并行算法的性能影響。
圖2 IPStats?MR算法的加速比曲線圖
由于MapReduce框架會(huì)將計(jì)算工作分配到n個(gè)Slave上,理論上每增加一個(gè)計(jì)算節(jié)點(diǎn),運(yùn)算速度應(yīng)該加快1倍。但從圖2可以看出,實(shí)際情況沒(méi)有達(dá)到這個(gè)效果。主要原因是各節(jié)點(diǎn)之間的通信、同步、調(diào)度等額外開(kāi)銷(xiāo),而且節(jié)點(diǎn)越多,上述開(kāi)銷(xiāo)也越大。不過(guò)即使如此,加速比也基本接近線性增長(zhǎng)。
實(shí)驗(yàn)2:等效度量實(shí)驗(yàn)
該實(shí)驗(yàn)評(píng)估增大問(wèn)題規(guī)模對(duì)并行算法的性能影響。加速比的最大值是計(jì)算結(jié)點(diǎn)數(shù)n,但由于額外開(kāi)銷(xiāo)的影響,實(shí)際上加速比Sn小于n,因此用等效度量指標(biāo)(ISO?efficiency)反映加速比接近n的程度,如式(2)所示:
[E=Snn=11+T0T1] (2)
式中:T0為系統(tǒng)并行處理所引起的額外時(shí)間開(kāi)銷(xiāo)。
實(shí)驗(yàn)在啟動(dòng)2個(gè)、4個(gè)或6個(gè)Slave的情況下,對(duì)不同的數(shù)據(jù)規(guī)模(日志文件大小分別為3.8 GB,8 GB,20 GB)運(yùn)行IPStats?MR算法。實(shí)驗(yàn)結(jié)果如圖3所示,隨數(shù)據(jù)規(guī)模增大,等效度量指標(biāo)提高;隨Slave個(gè)數(shù)增加,等效度量指標(biāo)降低。但隨著數(shù)據(jù)規(guī)模、Slave個(gè)數(shù)同時(shí)增加,等效度量指標(biāo)保持常數(shù)。2個(gè)Slave處理3.8 GB日志文件,4個(gè)Slave處理8 GB日志文件,6個(gè)Slave處理20 GB日志文件,等效度量指標(biāo)E都保持在0.75左右。這說(shuō)明當(dāng)系統(tǒng)處理的數(shù)據(jù)增多時(shí),能通過(guò)計(jì)算節(jié)點(diǎn)的增加來(lái)彌補(bǔ)性能的損耗,即IPStats?MR算法表現(xiàn)出良好的可擴(kuò)展性。
圖3 IPStats?MR算法的等效度量曲線圖
4 結(jié) 語(yǔ)
網(wǎng)絡(luò)日志的分析與挖掘技術(shù)在信息安全領(lǐng)域有著廣泛的應(yīng)用。傳統(tǒng)的單機(jī)運(yùn)算模式及算法在處理當(dāng)前的海量數(shù)據(jù)時(shí),暴露出諸多缺點(diǎn)。本文依托大數(shù)據(jù)技術(shù),提出分層的網(wǎng)絡(luò)日志分析系統(tǒng),對(duì)傳統(tǒng)的IP統(tǒng)計(jì)算法進(jìn)行了MapReduce化。實(shí)驗(yàn)結(jié)果表明,大數(shù)據(jù)平臺(tái)在處理數(shù)據(jù)密集型計(jì)算方面具有性能優(yōu)勢(shì),能有效解決海量數(shù)據(jù)處理的伸縮性和實(shí)時(shí)性問(wèn)題。
參考文獻(xiàn)
[1] 姜傳菊.網(wǎng)絡(luò)日志分析在網(wǎng)絡(luò)安全中的作用[J].現(xiàn)代圖書(shū)情報(bào)技術(shù),2004(12):58?60.
[2] DEAN J, GHEMAWAT S. MapReduce: simplified data processing on large clusters [J]. Communications of the ACM, 2008, 51(1): 107?113.
[3] GHEMAWAT S, GOBIOFF H, LEUNG S T. The Google file system [J]. ACM SIGOPS Operating Systems Review, 2003, 37(5): 29?43.
[4] SHVACHKO K, KUANG H, RADIA S, et al. The Hadoop distributed file system [C]// 2010 IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST). [S.l.]: IEEE, 2010: 1?10.
[5] 孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn)[J].計(jì)算機(jī)研究與發(fā)展,2013(1):146?169.
[6] 孔世明.基于最小生成樹(shù)聚類(lèi)算法在云計(jì)算平臺(tái)下的設(shè)計(jì)與實(shí)現(xiàn)[J].科技通報(bào),2013,29(8):100?102.
[7] 李學(xué)龍,龔海剛.大數(shù)據(jù)系統(tǒng)綜述[J].中國(guó)科學(xué):信息科學(xué),2015(1):1?4.
[8] 陳超,張順仕,尚守衛(wèi),等.大數(shù)據(jù)背景下電力行業(yè)數(shù)據(jù)應(yīng)用研究[J].現(xiàn)代電子技術(shù),2013,36(24):8?11.
[9] CHANG F, DEAN J, GHEMAWAT S, et al. Bigtable: A distributed storage system for structured data [J]. ACM Transactions on Computer Systems, 2008, 26(2): 4?9.
[10] 李錦川,錢(qián)秀檳,方星.基于國(guó)產(chǎn)操作系統(tǒng)的網(wǎng)絡(luò)日志管理系統(tǒng)構(gòu)建[J].計(jì)算機(jī)安全,2010(10):59?61.