一種基于分布式的海量日志采集系統的制作方法
【專利摘要】本發明公開了一種基于分布式的海量日志采集系統,該系統包括數據源層、分布式緩存層、分布式存儲與計算層、業務處理層、可視化展示層和統一調度與管理模塊。通過本發明能夠有效應對日志采集與高速入庫的問題,同時,使用分布式存儲與搜索引擎技術,加快查找與檢索的速度,從而實現了高速、準確、可靠地對海量日志進行采集與分析。
【專利說明】一種基于分布式的海量日志采集系統
【技術領域】
[0001]本發明涉及計算機【技術領域】,尤其涉及一種基于分布式的海量日志采集系統。
【背景技術】
[0002]隨著云計算、移動互聯網、物聯網的崛起與發展,大數據的時代已經來臨。對大數據業務系統進行日志采集與分析,是評價節點主機健康度、對系統出現的問題進行分析、展示各類報表的依據所在。
[0003]開源的海量日志解決方案有很多,例如FaceBook的Scribe、Apache的Chukwa> LinkedIn的Kafka、Cloudera的Flume等,也有綜合的解決方案,例如Kibana+Elasticsearch+LogStash、LogAnalyzer+MySQL+RSyslog> Splunk0 這些角軍決方案,他們都具備三個基本組件,分別為agent、collector和store,其中agent封裝數據源,將數據源中的數據發送給collector,collector接收多個agent的數據,并進行匯總后導入后端的store中,store為中央存儲系統,應該具有可擴展性和可靠性,應該支持當前非常流行的HDFS。agent必須安裝部署在進行日志采集的主機上面,還要配置相關參數以確定collector所在主機的位置。但是該方法中服務器端的安裝部署比較麻煩,大部分都需要使用源代碼進行編譯安裝,而且,開源的軟件基本是國外的軟件,由于中國大陸對國外大部分網站的封鎖以及國外某些網站對中國的封鎖,因此,有可能下載依賴軟件的時候,會出現拒絕連接的問題。
[0004]Storm是一個實時流計算框架,可以以近實時的速度對輸入源進行處理,然后輸出。Storm具有如下的特性:
[0005]易于擴展。Storm使用Zookeeper進行集群協調,這樣可以充分保證大型集群的良好運行。
[0006]每條消息的處理都可以得到保證。
[0007]Storm集群管理簡易。
[0008]Storm的容錯機能很好。一旦Topology遞交,Storm會一直運行它直到Topology被廢除或者被關閉。而在執行中出現錯誤時,也會由Storm重新分配任務。
[0009]—般使用Java,但是Storm中的Topology可以用任何語言設計。
[0010]但是Storm的Topology的業務邏輯,需要自己寫代碼實現,一定要在Spout中指定數據來源。
【發明內容】
[0011]本發明為了解決現有技術中的不足和缺陷,提出一種基于分布式的海量日志采集系統,可以有效應對日志采集與高速入庫的問題,同時,使用分布式存儲與搜索引擎技術,加快查找與檢索的速度,從而實現了高速、準確、可靠地對海量日志進行采集與分析。
[0012]一種基于分布式的海量日志采集系統,其通過在目標主機上安裝Agent進程,對目標主機的文本、應用程序、數據庫等日志信息進行有選擇地定向推送到服務器集群的統一訪問接口,服務器端采用了分布式緩存與實時流處理框架技術;該系統包括數據源層、分布式緩存層、分布式存儲與計算層、業務處理層、可視化展示層和統一調度與管理模塊。
[0013]數據源層,由數據采集組件(生產者)模塊對各個節點上面的文本、應用程序、數據庫等進行采集,推送到分布式緩存層。
[0014]分布式緩存層,由LVS對各個節點的消息隊列組件進行負載均衡,提供一個統一的接口來接收并寫入數據源節點推送過來的數據,等待分布式存儲與計算層的數據采集組件(消費者)來讀取。
[0015]分布式存儲與計算層,提供存儲與計算的功能,包括數據采集組件(消費者)模塊、離線計算模塊、實時計算模塊、分布式存儲和搜索引擎;其中,數據采集組件(消費者)模塊負責對分布式緩存層進行數據讀取;離線計算模塊由Hadoop及其生態系統組成;實時計算模塊由Storm組成。
[0016]業務處理層,提供統計分析和數據挖掘的功能與服務,由上層進行調用。
[0017]可視化展示層,提供普通查詢、全文檢索、報表展示、導入導出等功能。
[0018]統一調度與管理模塊,對上述5層進行統一的調度與管理,基于工作流,自動化處理。
[0019]本發明技術方案帶來的有益效果:
[0020]1、由于使用了 Storm實時流處理框架技術,因此,可以近實時地對Kafka分布式緩存中的消息進行處理并分類。
[0021]2、推送日志與讀取日志是異步進行的,可以不用感知相互的存在,只需要往分布式消息隊列Kafka里面寫入或者讀取即可。
[0022]3、每分鐘可以處理100萬條記錄,可以有效應對大數據數據采集的問題,產生經濟效益。
[0023]4、系統具有高可靠性,保證每條記錄被處理。
【專利附圖】
【附圖說明】
[0024]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它的附圖。
[0025]圖1是本發明中分布式數據采集系統的系統架構圖;
[0026]圖2是本發明中數據采集子系統的組成架構圖。
【具體實施方式】
[0027]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0028]本文提出了一種基于分布式的海量日志采集系統,通過在目標主機上安裝Agent進程,對目標主機的文本、應用程序、數據庫等日志信息進行有選擇地定向推送到服務器集群的統一訪問接口,服務器端采用了分布式緩存與實時流處理框架技術。通過本發明解決了現有技術中使用傳統的日志采集技術,對海量日志進行采集的過程中會出現上傳速度超過采集處理入庫速度,導致系統假死或者日志記錄丟失;使用開源的分布式日志采集組件,需要在各個節點安裝與配置Agent,某些Agent需要依賴很多第三方軟件,由于網絡等原因,無法安裝完成的缺點或不足,能夠有效應對日志采集與高速入庫的問題,同時,使用分布式存儲與搜索引擎技術,加快查找與檢索的速度,從而實現了高速、準確、可靠地對海量日志進行采集與分析。
[0029]如圖1所示為一種基于分布式的海量日志采集系統的系統架構圖。
[0030]本系統包括數據源層、分布式緩存層、分布式存儲與計算層、業務處理層、可視化展示層和統一調度與管理模塊。
[0031]數據源層,由數據采集組件(生產者)模塊對各個節點上面的文本、應用程序、數據庫等進行采集,推送到分布式緩存層。
[0032]分布式緩存層,由LVS對各個節點的消息隊列組件進行負載均衡,提供一個統一的接口來接收并寫入數據源節點推送過來的數據,等待分布式存儲與計算層的數據采集組件(消費者)來讀取。
[0033]分布式存儲與計算層,提供存儲與計算的功能,包括數據采集組件(消費者)模塊、離線計算模塊、實時計算模塊、分布式存儲和搜索引擎。其中,數據采集組件(消費者)模塊負責對分布式緩存層進行數據讀取;離線計算模塊由Hadoop及其生態系統組成;實時計算模塊由Storm組成。
[0034]業務處理層,提供統計分析和數據挖掘的功能與服務,由上層進行調用。
[0035]可視化展示層,提供普通查詢、全文檢索、報表展示、導入導出等功能。
[0036]統一調度與管理模塊,對上述5層進行統一的調度與管理,基于工作流,自動化處理。
[0037]數據采集子系統是分布式日志采集系統的核心組成部分,包括數據源層、分布式緩存層、數據處理層和持久化層,其可以獨立出來成為一個新的系統。其中,數據源層即分布式日志采集系統的數據源層;分布式緩存層即分布式日志采集系統的分布式緩存層;數據處理層即分布式日志采集系統的分布式存儲與計算層的實時計算模塊和統一調度與管理模塊;持久化層即分布式日志采集系統的分布式存儲與計算層的分布式存儲模塊。
[0038]數據采集子系統的組成,如圖2所示。
[0039]數據采集子系統的核心,主要包括位于數據源層的數據采集組件(生產者)模塊、分布式緩存層與數據處理層。
[0040]數據源層,包括很多的數據節點主機,每個主機上都安裝了數據采集組件(生產者)模塊,會啟動Agent進程來負責接收服務端的采集指令,把本節點的文本、應用程序、數據庫等數據推送到服務器集群中的統一訪問接口中。
[0041]分布式緩存層,位于服務器集群里面,其主要由LVS負責把數據自動轉發到Kafka集群中的某臺節點主機進行寫入,負責對外提供統一訪問接口和分布式緩存服務。其中統一訪問接口包括統一的域名/主機名和端口。
[0042]數據處理層,主要由Storm構成,其中Topology由I個Spout和若干個Bolt構成。KafkaReaderSpout負責讀取Kafka集群里面的數據,然后把數據傳輸給ExecutorBolt,ExecutorBolt根據業務邏輯及日志的類型,往下傳送數據到HbaseWriterBolt、HdfsffriterBolt 或者 SolrffriterBolt 中進行持久化存儲。其中,HbaseWriterBolt 負責HBase的持久化存儲,HdfsffriterBolt負責HDFS的持久化存儲、SolrffriterBolt負責Solr-Cloud的持久化存儲。
[0043]持久化層,主要由HBase、HDFS和Solr-Cloud組成。HBase主要是鍵值對存儲,存儲原始日志、分類處理后的日志;HDFS主要存儲原始日志;S0lr-Cl0ud主要對HBase存儲的日志進行索引,加快檢索速度,可以全文檢索。
[0044]數據采集子系統的工作流程:
[0045]首先,數據源的所有節點主機的Agent進程會自動推送本節點的文本、應用程序、數據庫等數據到服務器集群中的統一訪問接口中。
[0046]接著,統一訪問接口接收到數據,由LVS自動轉發到某個Kafka節點中并寫入數據,等待被讀取。
[0047]最后,由實時計算模塊Storm中的Topology進行業務處理,其中Topology由I個Spout和若干個Bo11構成。KafkaReaderSpout負責讀取Kafka集群中的數據,然后把數據傳輸給ExecutorBolt, ExecutorBolt根據業務邏輯及日志的類型,往下傳送數據到 HbaseWriterBolt、HdfsffriterBolt 或者 SolrWriterBolt 中進行持久化存儲。其中,HbaseWriterBolt負責HBase的持久化存儲,HdfsffriterBolt負責HDFS的持久化存儲、SolrffriterBolt 負責 Solr-Cloud 的持久化存儲。
[0048]以上對本發明實施例所提供的一種基于分布式的海量日志采集系統進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
【權利要求】
1.一種基于分布式的海量日志采集系統,其特征在于,該系統通過在目標主機上安裝Agent進程,對目標主機的文本、應用程序、數據庫等日志信息進行有選擇地定向推送到服務器集群的統一訪問接口,服務器端采用了分布式緩存與實時流處理框架技術;該系統包括數據源層、分布式緩存層、分布式存儲與計算層、業務處理層、可視化展示層和統一調度與管理模塊; 數據源層,由數據采集組件(生產者)模塊對各個節點上面的文本、應用程序、數據庫等進行采集,推送到分布式緩存層; 分布式緩存層,由LVS對各個節點的消息隊列組件進行負載均衡,提供一個統一的接口來接收并寫入數據源節點推送過來的數據,等待分布式存儲與計算層的數據采集組件(消費者)來讀取; 分布式存儲與計算層,提供存儲與計算的功能,包括數據采集組件(消費者)模塊、離線計算模塊、實時計算模塊、分布式存儲和搜索引擎;其中,數據采集組件(消費者)模塊負責對分布式緩存層進行數據讀取;離線計算模塊由Hadoop及其生態系統組成;實時計算模塊由Storm組成; 業務處理層,提供統計分析和數據挖掘的功能與服務,由上層進行調用; 可視化展示層,提供普通查詢、全文檢索、報表展示、導入導出等功能; 統一調度與管理模塊,對上述5層進行統一的調度與管理,基于工作流,自動化處理。
2.根據權利要求1所述的系統,其特征在于,該系統的數據源層、分布式緩存層、分布式存儲與計算層的實時計算模塊和分布式存儲模塊、統一調度與管理模塊是分布式日志采集系統的核心部分,即數據采集子系統,其包括數據源層、分布式緩存層、數據處理層和持久化層,其可以獨立出來成為一個新的系統;其中,數據源層即分布式日志采集系統的數據源層;分布式緩存層即分布式日志采集系統的分布式緩存層;數據處理層即分布式日志采集系統的分布式存儲與計算層的實時計算模塊和統一調度與管理模塊;持久化層即分布式日志采集系統的分布式存儲與計算層的分布式存儲模塊。
3.根據權利要求2所述的系統,其特征在于,數據源層,包括很多的數據節點主機,每個主機上都安裝了數據采集組件(生產者)模塊,會啟動Agent進程來負責接收服務端的采集指令,把本節點的文本、應用程序、數據庫等數據推送到服務器集群中的統一訪問接口中; 分布式緩存層,位于服務器集群里面,其主要由LVS負責把數據自動轉發到Kafka集群中的某臺節點主機進行寫入,負責對外提供統一訪問接口和分布式緩存服務;其中統一訪問接口包括統一的域名/主機名和端口; 數據處理層,由Storm構成,其中Topology由I個Spout和若干個Bolt構成。KafkaReaderSpout負責讀取Kafka集群里面的數據,然后把數據傳輸給ExecutorBolt,ExecutorBolt根據業務邏輯及日志的類型,往下傳送數據到HbaseWriterBolt、HdfsffriterBolt 或者 SolrWriterBolt 中進行持久化存儲;其中,HbaseWriterBolt 負責HBase的持久化存儲,HdfsffriterBolt負責HDFS的持久化存儲、SolrffriterBolt負責Solr-Cloud的持久化存儲; 持久化層,由HBase、HDFS和Solr-Cloud組成。HBase主要是鍵值對存儲,存儲原始日志、分類處理后的日志;HDFS主要存儲原始日志;Solr-Cloud主要對HBase存儲的日志進行索引,加快檢索速度,可以全文檢索。
4.根據權利要求3所述的系統,其特征在于,數據采集子系統的核心,包括位于數據源層的數據采集組件(生產者)模塊、分布式緩存層與數據處理層。
5.根據權利要求3或4所述的系統,其特征在于,數據采集子系統的工作流程為:首先,數據源的所有節點主機的Agent進程會自動推送本節點的文本、應用程序、數據庫等數據到服務器集群中的統一訪問接口中; 接著,統一訪問接口接收到數據,由LVS自動轉發到某個Kafka節點中并寫入數據,等待被讀取; 最后,由實時計算模塊Storm中的Topology進行業務處理,其中Topology由I個Spout和若干個Bolt構成;KafkaReaderSpout負責讀取Kafka集群中的數據,然后把數據傳輸給ExecutorBolt, ExecutorBolt根據業務邏輯及日志的類型,往下傳送數據到 HbaseWriterBolt、HdfsffriterBolt 或者 SolrWriterBolt 中進行持久化存儲;其中,HbaseWriterBolt負責HBase的持久化存儲,HdfsffriterBolt負責HDFS的持久化存儲、SolrffriterBolt 負責 Solr-Cloud 的持久化存儲。
【文檔編號】G06F11/34GK104036025SQ201410299857
【公開日】2014年9月10日 申請日期:2014年6月27日 優先權日:2014年6月27日
【發明者】楊育斌, 柯宗貴, 趙必廈 申請人:藍盾信息安全技術有限公司