一種實時監(jiān)控分析大量日志的系統(tǒng)及方法
【專利摘要】本發(fā)明公開了一種實時監(jiān)控分析大量日志的系統(tǒng)及方法,屬于網(wǎng)管監(jiān)控技術(shù)領(lǐng)域。本發(fā)明的實時監(jiān)控分析大量日志的系統(tǒng)包括日志采集模塊、日志匯總及分發(fā)模塊和日志處理模塊;日志采集模塊采用Flume?ng技術(shù),分為Agent層、Collector層和Store層;日志匯總及分發(fā)模塊采用kafka技術(shù),用于接收Flume集群的日志消息,并將接收的日志消息分發(fā)到日志處理模塊;日志處理模塊采用storm技術(shù),由數(shù)據(jù)源Spout和日志處理者Bolt構(gòu)成。該發(fā)明的實時監(jiān)控分析大量日志的系統(tǒng)能實時處理網(wǎng)絡(luò)中的風(fēng)險和故障,從而保障網(wǎng)絡(luò)的安全與穩(wěn)定,減少使用者的損失,具有很好的推廣應(yīng)用價值。
【專利說明】
一種實時監(jiān)控分析大量日志的系統(tǒng)及方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)管監(jiān)控技術(shù)領(lǐng)域,具體提供一種實時監(jiān)控分析大量日志的系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)的規(guī)模越來越大,網(wǎng)絡(luò)也越來越復(fù)雜,為了保障網(wǎng)絡(luò)的正常運行,需要對網(wǎng)絡(luò)設(shè)備進行實時監(jiān)控,還需要對網(wǎng)絡(luò)中的應(yīng)用系統(tǒng)進行實時監(jiān)控。
[0003]由于網(wǎng)絡(luò)的復(fù)雜性,日志消息的形式也是多種多樣。傳統(tǒng)的日志監(jiān)控手段需要開發(fā)定制大量的接口,會浪費大量的人力財力。此外,傳統(tǒng)的日志監(jiān)控方式在實時處理海量日志時存在很多的不足,如:當(dāng)網(wǎng)絡(luò)中新增加一種網(wǎng)絡(luò)設(shè)備或應(yīng)用系統(tǒng)時,都需要為該新增加的設(shè)備或系統(tǒng)定制開發(fā)對應(yīng)的日志采集腳本;傳統(tǒng)方式是先將采集到的日志消息存放在磁盤上面,然后再分發(fā)給日志處理引擎處理,時效性較差,不能滿足實時處理的要求;對于文本方式的日志消息,在處理日志消息時,很難檢測到哪些日志是最新產(chǎn)生的,傳統(tǒng)方式需要將整個日志文件掃描一遍,才能確定最新產(chǎn)生的日志消息;面對海量的日志消息,不可能在一臺機器上面完成日志的處理,而是需要用到分布式的處理方式,而傳統(tǒng)方式多集中在一臺服務(wù)器上完成,不能滿足海量日志處理的要求;由于日志的處理涉及到多個處理環(huán)節(jié),不僅需要分布式處理方式,還需要流式處理方式,傳統(tǒng)的日志處理方式很難滿足該要求。
[0004]傳統(tǒng)方式處理海量日志時,分析處理滯后,無法做到實時的分析處理,無法及時了解和處理網(wǎng)絡(luò)中的風(fēng)險和故障,給公司和客戶帶來很大的不便。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的技術(shù)任務(wù)是針對上述存在的問題,提供一種能實時處理網(wǎng)絡(luò)中的風(fēng)險和故障,從而保障網(wǎng)絡(luò)的安全與穩(wěn)定,減少使用者損失的實時監(jiān)控分析大量日志的系統(tǒng)。
[0006]本發(fā)明進一步的技術(shù)任務(wù)是提供一種過程簡單,能實時處理網(wǎng)絡(luò)中的風(fēng)險和故障,從而保障網(wǎng)絡(luò)的安全與穩(wěn)定的實時監(jiān)控分析大量日志的方法。
[0007]為實現(xiàn)上述目的,本發(fā)明提供了如下技術(shù)方案:
一種實時監(jiān)控分析大量日志的系統(tǒng),包括日志采集模塊、日志匯總及分發(fā)模塊和日志處理模塊;
其中,所述日志采集模塊采用Flume-ng技術(shù),分為Agent層、Collector層和Store層,Agent層用于代理采集日志消息,Collector層部署在中心服務(wù)器上,用于接收Agent層發(fā)送的日志消息,并將日志消息寫到相應(yīng)的Store層,Store層用于存儲日志消息;
所述日志匯總及分發(fā)模塊采用kafka技術(shù),用于接收Flume集群的日志消息,并將接收的日志消息分發(fā)到日志處理模塊;
所述日志處理模塊采用storm技術(shù),由數(shù)據(jù)源Spout和日志處理者Bolt構(gòu)成,數(shù)據(jù)源Spout用于從日志匯總及分發(fā)模塊讀取日志消息,日志處理者Bolt用于將所有的日志消息處理邏輯進行封裝,處理輸入的數(shù)據(jù)流,并產(chǎn)生輸出新的數(shù)據(jù)流。
[0008]Agent層每個機器部署一個進程,負責(zé)對單機的日志采集工作。Collector層部署在中心服務(wù)器上,負責(zé)接收Agent層發(fā)送的日志消息,并且將日志消息根據(jù)路由規(guī)則寫到相應(yīng)的Store層中。Store層負責(zé)提供永久或者臨時的日志消息存儲服務(wù),或者將日志流導(dǎo)向其他服務(wù)器。
[0009]通過Flume的Agent層采集日志消息,匯總到Flume集群,再由Flume的Sink將日志消息輸送到kafka集群,完成數(shù)據(jù)的生產(chǎn)流程。數(shù)據(jù)源Spout節(jié)點實時接收kafka發(fā)送的最新日志消息,并將日志消息不斷的發(fā)送給多個負責(zé)歸一化的日志處理者Bolt進程。
[00?0] 作為優(yōu)選,所述Agent層到Collector層使用LoadBalance策略,將所有的日志消息均衡地發(fā)送到所有的Collector上,達到負載均衡的目標(biāo),同時處理單個Collector失效的問題。Collector層的目標(biāo)主要有三個:SinkHdfs,SinkKafka和SinkBypass,提供離線的數(shù)據(jù)到SinkHdfs,提供實時的日志流到SinkKafka和SinkBypass。本發(fā)明選用的是SinkKafka。[0011 ] 作為優(yōu)選,所述S P ο u t與B ο 11之間、B ο 11與B ο 11之間的信息傳遞支持Shuf f I eGroup ing 和 F i e IdsGroup ing 策略。
[0012]作為優(yōu)選,所述日志處理者Bolt完成的操作為:日志的解析、日志的過濾、屏蔽、派生告警、入庫和日志匯總。在日志的過濾和派生告警環(huán)節(jié),根據(jù)告警規(guī)則判斷當(dāng)前的日志消息是否滿足相關(guān)規(guī)則,若滿足規(guī)則就觸發(fā)相關(guān)的處理。
[0013]—種實時監(jiān)控分析大量日志的方法,包括以下步驟:
(一)、日志采集:采用Flume-ng技術(shù),通過Agent代理采集日志消息,將日志消息匯總到Flume集群,由Flume的Sink將日志消息輸送到Kafka集群,完成數(shù)據(jù)的生產(chǎn)流程;
(二)日志匯總及分發(fā):采用kafka技術(shù),從Flume的Sink中讀取日志消息,并將日志消息輸送到數(shù)據(jù)源Spout中;
(三)日志處理:采用storm技術(shù),由一個數(shù)據(jù)源Spout節(jié)點實時接收最新的日志消息,并將日志消息采用ShuffleGrouping、FieldsGrouping不斷的傳遞給多個負責(zé)歸一化的日志處理者Bolt進程中,完成日志的解析、日志的過濾、屏蔽、派生告警、入庫和日志匯總。
[OOM] 作為優(yōu)選,步驟(三)中構(gòu)建日志處理的storm的Topology架構(gòu),將日志處理流程根據(jù)業(yè)務(wù)節(jié)點拆分為多個進程,多進程之間通過可靠的消息傳遞實時交互數(shù)據(jù)。
[0015]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下突出的有益效果:
(一)該發(fā)明所述實時監(jiān)控分析大量日志的方法能夠?qū)崟r的處理網(wǎng)絡(luò)中的風(fēng)險和故障,時效性強,可以最大程度上保障網(wǎng)絡(luò)的安全與穩(wěn)定;
(二)該發(fā)明的日志匯總及分發(fā)模塊采用kafka技術(shù)實現(xiàn),kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),適用于大量日志的實時處理;
(三)該發(fā)明的日志處理模塊采用storm技術(shù),為分布式的流式處理方式,該技術(shù)降低了實時處理的復(fù)雜性、可以使用各種編程語言、容錯性高、水平擴展性能好、消息處理過程可靠并且快速,能夠保證消息得到快速可靠的處理。
【附圖說明】
[0016]圖1是本發(fā)明所述實時監(jiān)控分析大量日志的系統(tǒng)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明所述實時監(jiān)控分析大量日志的系統(tǒng)的日志采集模塊、日志匯總及分發(fā)模塊的具體結(jié)構(gòu)示意圖;
圖3是本發(fā)明所述實時監(jiān)控分析大量日志的系統(tǒng)的日志處理模塊的具體結(jié)構(gòu)示意圖; 圖4是本發(fā)明所述實時監(jiān)控分析大量日志的方法的日志處理流程圖;
圖5是本發(fā)明所述實時監(jiān)控分析大量日志的方法告警的生成判斷過程流程圖。
[0017]其中,1.日志采集模塊,2.日志匯總及分發(fā)模塊,3.日志處理模塊。
【具體實施方式】
[0018]下面將結(jié)合附圖和實施例,對本發(fā)明的一種實時監(jiān)控分析大量日志的系統(tǒng)及方法作進一步詳細說明。
實施例
[0019]如圖1、圖2和圖3所示,本發(fā)明的一種實時監(jiān)控分析大量日志的系統(tǒng),包括日志采集模塊1、日志匯總及分發(fā)模塊2和日志處理模塊3。日志采集模塊I采用Flume-ng技術(shù),分為Agent層、Co I lector層和Store層。Agent層每個機器部署一個進程,用于代理采集日志消息。Collector層部署在中心服務(wù)器上,用于接收Agent層發(fā)送的日志消息,并將日志消息寫到相應(yīng)的Store層。Store層負責(zé)提供永久或者臨時的日志消息存儲服務(wù),或者將日志流導(dǎo)向其他服務(wù)器。Agent層到Col lector層使用LoadBalance策略,將所有的日志消息均衡地發(fā)到所有的Co I Iec tor上,達到負載均衡的目標(biāo),同時處理單個Co I Iec tor失效的問題。Collector層選用SinkKafka,提供實時的日志流到SinkKafka。
[0020]日志匯總及分發(fā)模塊2采用kafka技術(shù),用于接收Flume集群的日志消息,并將接收的日志消息分發(fā)到日志處理模塊。
[0021]日志處理模塊3采用storm技術(shù),由數(shù)據(jù)源Spout和日志處理者Bolt構(gòu)成。數(shù)據(jù)源Spout用于從日志匯總及分發(fā)模塊讀取日志消息,日志處理者Bolt用于將所有的日志消息處理邏輯進行封裝,處理輸入的數(shù)據(jù)流,并產(chǎn)生輸出新的數(shù)據(jù)流。Spout與Bolt之間、Bolt與Bolti 間的消息傳遞支持Shuf f I eGroup ing和Fi e I dsGroup ing策略。
[0022]通過Flume的Agent層采集日志消息,匯總到Flume集群,再由Flume的Sink將日志消息輸送到kafka集群,完成數(shù)據(jù)的生產(chǎn)流程。數(shù)據(jù)源Spout節(jié)點實時接收kafka發(fā)送的最新日志消息,并將日志消息不斷的發(fā)送給多個負責(zé)歸一化的日志處理者Bolt進程。
[0023]Bolt完成的操作包括日志的解析、日志的過濾、屏蔽、派生告警、入庫和日志匯總。具體流程如圖4所示。在日志的過濾和派生告警環(huán)節(jié),根據(jù)告警規(guī)則判斷當(dāng)前的日志消息是否滿足相關(guān)的規(guī)定,如滿足規(guī)定則觸發(fā)相關(guān)的處理。如圖5所示。
[0024]本發(fā)明所述實時監(jiān)控分析大量日志的方法的具體過程為:
(1)先在服務(wù)器上搭建Flume的服務(wù)端,并在需要監(jiān)控的服務(wù)器上面安裝Flume的Agent端,Agent端來采集日志消息,并將采集到的日志消息發(fā)送到Co 11 e c tor層,Co 11 e c tor層的日志信息最終以日志文件的形式寫到相應(yīng)的Store層;
(2)kafka軟件的安裝部署,并配置topic消息從flume的sink中讀取日志消息;
(3)安裝部署storm和其同步所需的zookeeper軟件,首先storm的spout從kafka中讀取日志消息,然后采用Shuff IeGrouping方式分發(fā)給Bolt,Bolt用于將所有的日志消息處理邏輯進行封裝,處理輸入的數(shù)據(jù)流,并產(chǎn)生輸出新的數(shù)據(jù)流,在Bolt中進行日志的解析、日志的過濾、屏蔽、派生告警、入庫和日志匯總等處理;
(4)在Bolt中加載日志處理規(guī)則到內(nèi)存中(MAP結(jié)構(gòu)),在處理日志消息的過程中,用日志消息來匹配處理規(guī)則,如果日志消息滿足處理規(guī)則就觸發(fā)相關(guān)的日志消息的處理。
[0025]以上所述的實施例,只是本發(fā)明較優(yōu)選的【具體實施方式】,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進行的通常變化和替換都應(yīng)包含在本發(fā)明的保護范圍內(nèi)。
【主權(quán)項】
1.一種實時監(jiān)控分析大量日志的系統(tǒng),其特征在于:包括日志采集模塊、日志匯總及分發(fā)模塊和日志處理模塊; 其中,所述日志采集模塊采用Flume-ng技術(shù),分為Agent層、Col lector層和Store層,Agent層用于代理采集日志消息,Collector層部署在中心服務(wù)器上,用于接收Agent層發(fā)送的日志消息,并將日志消息寫到相應(yīng)的Store層,Store層用于存儲日志消息; 所述日志匯總及分發(fā)模塊采用kafka技術(shù),用于接收Flume集群的日志消息,并將接收的日志消息分發(fā)到日志處理模塊; 所述日志處理模塊采用storm技術(shù),由數(shù)據(jù)源Spout和日志處理者Bolt構(gòu)成,數(shù)據(jù)源Spout用于從日志匯總及分發(fā)模塊讀取日志消息,日志處理者Bolt用于將所有的日志處理邏輯進行封裝,處理輸入的數(shù)據(jù)流,并產(chǎn)生輸出新的數(shù)據(jù)流。2.根據(jù)權(quán)利要求1所述的實時監(jiān)控分析大量日志的系統(tǒng),其特征在于:所述Agent層到Collector層使用LoadBalance策略,將所有的日志消息均衡地發(fā)到所有的Collector上。3.根據(jù)權(quán)利要求1或2所述的實時監(jiān)控分析大量日志的系統(tǒng),其特征在于:所述Spout與Bolt之間、Bolt與Bolt之間的日志消息傳遞支持Shuff IeGrouping和FieldsGrouping策略。4.根據(jù)權(quán)利要求3所述的實時監(jiān)控分析大量日志的系統(tǒng),其特征在于:所述日志處理者Bolt完成的操作為:日志的解析、日志的過濾、屏蔽、派生告警、入庫和日志匯總。5.一種實時監(jiān)控分析大量日志的方法,其特征在于:包括以下步驟: (一)、日志采集:采用Flume-ng技術(shù),通過Agent代理采集日志消息,將日志消息匯總到Flume集群,由Flume的Sink將日志消息輸送到Kafka集群,完成數(shù)據(jù)的生產(chǎn)流程; (二)日志匯總及分發(fā):采用kafka技術(shù),從Flume的Sink中讀取日志消息,并將日志消息輸送到數(shù)據(jù)源Spout中; (三)日志處理:采用storm技術(shù),由一個數(shù)據(jù)源Spout節(jié)點實時接收最新的日志消息,并將日志消息采用ShuffleGrouping、FieldsGrouping不斷的傳遞給多個負責(zé)歸一化的日志處理者Bolt進程中,完成日志的解析、日志的過濾、屏蔽、派生告警、入庫和日志匯總。6.根據(jù)權(quán)利要求5所述的實時監(jiān)控分析大量日志的方法,其特征在于:步驟(三)中構(gòu)建日志處理的storm的Topology架構(gòu),將日志處理流程根據(jù)業(yè)務(wù)節(jié)點拆分為多個進程,多進程之間通過可靠的信息傳遞實時交互數(shù)據(jù)。
【文檔編號】G06F17/30GK105868075SQ201610196661
【公開日】2016年8月17日
【申請日】2016年3月31日
【發(fā)明人】趙宏
【申請人】浪潮通信信息系統(tǒng)有限公司