需求: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进行离线分析。