需求:
通過開源軟件fluentd收集各個設備的apache訪問日誌到fluentd的轉發服務器中,然後通過webHDFS接口,寫入到hdfs文件系統中。
軟件版本說明:
hadoop版本:1.1.2
fluentd版本:1.1.21
測試環境說明:
node29服務器上安裝了apache,以及fluentd,作爲fluentd的客戶端;
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的轉發角色,具體配置文件如下:
<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進行離線分析。