陳軍

【摘 要】互聯網的迅猛發展以及大數據相關技術的興起,使得日志數據的規模日益劇增,給已有的日志采集及分析系統帶來了挑戰;本文結合使用Flume、Elasticsearch 以及 Kibana等技術手段提出了一種分布式的日志采集分析系統,從系統設計和架構等方面提出了新的解決思路,并針對Flume的訪問日志進行了實時采集和分析及展示。
【關鍵詞】日志采集;Flume;Elasticsearch;Kibana
0 引言
當前隨著“互聯網+”時代的到來,分布系統需要處理的數據量更大、數據種類更豐富和數據實時性要求更高,面向分布式實時數據的分析技術日趨重要。面對高并發海量數據的實時處理,構建滿足負載均衡、高可擴展性、高可用性和持久化多種特性的數據分析系統具有較大挑戰。數據采集器在應對高并發的數據推送請求時,應該進行負載均衡,最大程度的減少數據的緩存時間;數據采集系統的高擴展性主要用于實現異構數據源的處理,對結構化和非結構化數據的兼容處理;面向數據流的實時數據分析系統需要通過主-備模式的集群保障系統的高可用;同時要對原始數據和數據分析指標進行持久化,支持高并發的寫入。本文以開源的Apache Flume為底層數據采集技術,從數據聚合的視角對分布式日志系統進行研究。
1 日志分析技術國內外研究現狀
在大數據時代,日志數據分析的多樣化需求催生了多種日志分析技術。Apache Flume、ELK(ElasticSearch+Logstash+Kibana)、Scribe和Chukwa是等到廣泛關注和使用的開源日志分析技術。Flume當前是Apache支持的項目,能夠為高效的采集、聚合和傳輸海量日志數據提供分布式、可靠的服務。
Flume采用agent、cllector和storage agent的三層數據采集架構,agent支持console、RPC、text、syslog和tail等多種數據形式,cllector將多個agent的數據匯總后存儲到storage中。Flume利用多Master機制保障了高可用性,通過Zookeeper實現了配置數據的一致性。ELK是將ElasticSearch、Logstash和Kibana三種開源技術集成為一體實現數據的采集、過濾、分析和可視化的日志分析技術。Scribe 是由Facebook開發并開源的日志分析采集系統,通過共享隊列將多數據源的日志暫存并根據中央存儲系統的健康程度選擇本地持久化還是推送到中存儲系統。Chukwa是一個基于Hadoop的HDFS和mapreduce計算模型的分布式數據采集系統,包括agents、adaptor、cllectors和map/reduce jobs四大部件。
開源日志分析技術涵蓋了普適環境下的數據采集模型的多個步驟:數據采集、數據緩沖、數據過濾與轉換、數據存儲。基于普適環境下的數據采集模型提高數據采集的高可擴展性、數據緩沖的低延遲和數據存儲的高可用性將會是數據分析系統的研究熱點。
2 基于規則引擎的日志聚合方案
規則引擎是與應用程序相嵌套的一種組件,實現了業務規則和應用程序代碼的有效分離,適用于規則推理和業務編排。在日志分析過程中將繁雜的分離規則使用規則引擎進行描述,可以實現分析過程中自動高效的數據路由與聚合。Drools是基于rete算法將分離的匹配項以不同內容動態的構建層次化得匹配樹,是當前效率較高、擴展性好的開源規則引擎。
在Flume中,除了agent、channel和sink三種最重要的組件,還有攔截器、channel選擇器、sink處理器等增加Flume靈活性的組件。攔截器是位于agent和channel之間的用于攔截來自數據源的各種事件,多個攔截器構成的鏈條構成了漏斗型的數據過濾工具。Channel選擇器用來決定將接收到的事件寫入到哪個channel,支持必選和可選兩種類型的參數配置。sink處理器通過事先設定的sink組對組內多個sink如何從各自的channel讀取事件,進而實現層次化Flume中數據推送的負載均衡和故障轉移。在Flume中,所有的組件的集成都是通過讀取Context實例化的鍵值類型的配置信息進行的。因此,為了實現Flume更大程度的靈活性,減少繁瑣的配置型信息的管理,有必要探索充分發揮規則引擎規則推理能力的高效方法。
在深入分析interceptor、channel和sink可定制化的基礎上,作者對規則引擎如何與Flume多個組件進行結合進行了抽象。這里以channel選擇器的數據路由與聚合規則為例,對使用Drools規則引擎定義規則、生成規則摘要、構造規則模型以及規則執行器的處理全過程進行了剖析。提出了具有普適意義的日志聚合規則編程模型。
3 分布式日志聚合系統框架
在分析和研究Flume,以及日志聚合規則的基礎上,結合日志分析系統分布式、高并發的特性,將日志聚合系統分成數據采集、聚合服務和數據可視化三個層次。日志采集主要完成對多樣化數據源數據的采集,能夠對結構化和非結構化數據進行初步的匯總;聚合服務包括高并發請求的轉化和分離、數據流服務和日志數據的聚合;數據可視化支持定制化的數據指標顯示,實現對應用程序、服務器負載性能和關鍵業務多維度數據指標的展示。
日志采集層主要采用RPC的形式收集數據,并將數據推送到influxdb實時數據庫中,完成數據的初步采集。隨著數據源的不斷增加,在日志采集末端需要構建層次化的采集模型有效的均衡influxdb接收數據源推送數據的壓力。
聚合服務層一方面要對高并發的日志數據分析請求進行轉化和分離,提供數據流服務實現負載均衡;另一方面要對實時數據流進行分析,根據聚合規則模型實現日志的分類匯總。Influxdb對時序數據流根據關鍵詞進行初步的過濾,獲取目標分析數據。結合基于規則引擎構建的日志聚合方案依據日志信息的上下文對日志進行分類,當前端請求日志分析指標時根據不同維度提供數據流服務。
日志分析指標可視化,該層次首先接收數據流服務提供的實時數據,并基于Granfana實現的日志分析指標展示可定制化。日志分析指標持久化可以實現對歷史日志分析指標的存儲,便于觀察關鍵指標的長期趨勢。
4 總結
論文基于Flume的分布式日志聚合系統研究主要從日志分析技術對比、基于規則引擎的日志聚合方案設計以及日志聚合系統的框架設計與實現三個方面進行了研究。在充分分析現有日志分析技術的基礎上,對數據聚合規則如何快速構建的關鍵問題進行研究,本文提出了基于Drools規則引擎構建聚合規則的普適性的編程模型。并通過構建層次化得分布式日志聚合系統架構對模型進行驗證,實驗表明規則引擎的引入,簡化了配置數據的管理,對Flume擴展性和靈活性有很大提升。
【參考文獻】
[1]宋密,王勁松.基于Flume的網絡安全可視化系統[J].天津理工大學學報,2015,02:38-42.
[2]馬延超,王超,李尚同.基于大數據技術的日志統計與分析系統研究[J].電腦知識與技術,2016,(34):9-11.
[責任編輯:朱麗娜]