需求:node
經過開源軟件fluentd收集各個設備的apache訪問日誌到fluentd的轉發服務器中,而後經過webHDFS接口,寫入到hdfs文件系統中。web
軟件版本說明:apache
hadoop版本:1.1.2bash
fluentd版本:1.1.21服務器
測試環境說明:ide
node29服務器上安裝了apache,以及fluentd,做爲fluentd的客戶端;oop
node1服務器,爲hadoop服務器的namenode;測試
node29服務器上fluentd配置文件:日誌
<source> type tail format apache2 path /var/log/httpd/access_log pos_file /var/log/td-agent/access_log.pos time_format %Y-%m-%d %H:%M:%S localtime tag apache.access </source> #Log Forwarding to node1 server <match apache.access> type forward # time_slice_format %Y%m%d # time_slice_wait 10m # localtime #定義日誌入庫日誌的時間; time_format %Y-%m-%d %H:%M:%S #localtime很是重要,不設置日誌時間和系統時間相差8小時; localtime #定義入庫日誌的時間; <server> host node1 port 24224 </server> flush_interval 1s </match>
node1服務器配置,這個服務器上配置了hadoop的namenode,以及做爲fluentd的轉發角色,具體配置文件以下:
orm
<source> type forward port 24224 </source>
<match apache.access>
type webhdfs
host node1.test.com
port 50070
path /apache/%Y%m%d_%H/access.log.${hostname}
time_slice_format %Y%m%d
time_slice_wait 10m
#定義日誌入庫日誌的時間;
time_format %Y-%m-%d %H:%M:%S
localtime
flush_interval 1s
</match>
配置好之後,重啓fluentd服務;
開始測試,在node29用ab命令開始訪問apache,生成訪問日誌;
而後,到node1服務器上去查看HDFS文件系統中,是否生成了相關文件及目錄:
查看生成的目錄:
查看文件裏面具體日誌:
hadoop fs -cat /apache/20150106_16/access.log.node1.test.com
如上圖所示,fluentd已經經過轉發模式,把node29服務器上apache日誌收集到hdfs文件系統中了,方便下一步用hadoop進行離線分析。