于秦
【摘要】 在信息化及大數據時代下,各種應用程序的分散及生成的日志信息成爆炸式增長,怎么有效的收集這些日志,并對它進行在線和離線分析,已經成為這領域的熱點。我們在現有的Apache Flume、Hadoop等框架下,設計實現了一種大數據日志收集系統。
【關鍵詞】 Apache Flume 日志收集 Hadoop
大數據及互聯網時代下,為了更有效的管理各種應用和系統程序的運行,通過收集它們的日志信息,進行離線和在線分析,來了解它們的運行和安全情況。在信息化及大數據下,分布式系統用的越來越多,日志的存儲路徑及分布情況越來越多。為了能更好的聚集存儲分析這些分布式日志,本文基于開源的Apache Flume 、Hadoop 框架下,設計實現了一種大數據分布式的日志收集系統,并將收集的日志用于監控分析。
一、 Flume
Flume 是一種開源的分布式日志管理架構,它可以將日志聚集,有可用性高、性能高、事務管理、失敗重啟等功能。將各個分布式系統上的日志源聚集到一個存儲上,方便日志的統一的分析和處理。數據處理速度快,完全可以用于生產環境[4]。 Flume的核心是agent :(1)agent是一個java進程,運行在日志收集端,通過agent接收日志,然后暫存起來,再發送到目的地;(2)agent里面包含3個核心組件:source、channel、sink。source 組件是專用于收集日志的,可以處理各種類型各種格式的日志數據,source組件把數據收集來以后,臨時存放在channel中。channel 組件是在agent中專用于臨時存儲數據的,channel中的數據只有在sink發送成功之后才會被刪除。sink 組件是用于把數據發送到目的地的組件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定義。在整個數據傳輸過程中,流動的是event。事務保證是在event級別。flume可以支持多級flume的agent,支持扇入(fan-in)、扇出(fan-out)。
二、Morphline
Morphline是由flume的母公司Cloudera開源的一個ETL框架。它用于構建、改變基于Hadoop進行 ETL的流式處理程序,流程圖如圖2。Morphline用簡單的配置步驟代替了Java編程。
三、日志收集系統的實現
1、Linux系統及應用日志的收集處理。首先我們配置Linux系統下的rsyslog文件實現日志的外發,通過udp或tcp等協議將日志信息通過設定的端口發到所指定IP地址的機器上。然后在安裝有flume的機器上,修改配置文件,設定source 類型為syslogudp或syslogtcp、端口與外發端口對應。設置channel的類型,這里常用的主要有filechannel和memorychannel兩種類型,memorychannel具有高的吞吐量,持久化卻比較低,而filechannel提供了這種持久化,保證了數據處理的可靠性,但是讀寫速度較慢,我們這里選取memorychannel。最后通過sink 將日志存儲到目的地。這里我們分為兩種存儲外發方式,一種用于離線分析存儲到Hadoop下的分布式文件系統(HDFS),它具有容錯性高、可擴展、吞吐量高等特征;另一種用于實時數據分析處理,將它發送到Kafka上,通過Storm收集及處理分析數據。在這里為了處理的方便,我們利用morphline對日志進行了格式化處理,message域中采用正則表達式進行格式化處理。
2、Windows系統日志的收集收集處理。由于Windows自身系統沒有轉發功能,我們需要安裝一個agent。我們利用agent把Windows的各類日志轉變成syslog日志,最后通過相應的協議轉發到服務器端。Evtsys用C語言開發的,它可以將Windows相應的日志發送到syslog服務器。由于它的高效、快速、輕量等特點,常常被一些高負載的服務器所設計利用。并可以作為Windows服務存在。我們通過安裝Evtsys工具來實現window系統下日志的外發,通過在命令行中開啟命令就可以在接收端通過flume接收日志進行存儲,設置如(1)。
3、其他軟件平臺日志的收集收集處理。其他軟件平臺的日志通過安裝相應的agent,設置agent的外發配置實現flume端的接收收集存儲。
結論:基于現有日志收集方案下,通過開源軟件Flume設計實現一種分布式多平臺多系統收集多種日志的系統。本系統具有高吞吐量、可擴展性強、高聚合等特征,還通過morphine將message域進行分割便于提取有關信息,實現日志的集中存儲,方便數據的分析,同時為實時和離線數據分析提供數據。
參 考 文 獻
[1] 詹玲,馬駿,陳伯江,陳維梁,呂睿.分布式I/O日志收集系統的設計與實現[J]. 計算機工程與應用. 2010(36)
[2] 宋愛青.基于Hadoop的日志分析系統的設計與實現[D]. 中國地質大學(北京) 2012
[3] 孫寅林.基于分布式計算平臺的海量日志分析系統的設計與實現[D]. 西安電子科技大學 2012
[4] Apache Flume. http://flume.apache.org/ .
[5]Morphline.http://kitesdk.org/