Fluentd+Hadoop结合进行日志收集、分析

 

Fluentd是一个实时日志收集系统,它把日志作为JSON stream,可以同时从多台server上收集几百G的日志。fluentd易于安装,有灵活的插件机制和缓冲,支持日志转发。它的特点在于各部分均是可定制化的,可以通过简单的配置,将日志收集到不同的地方。

Hadoop是一个能够对大量数据进行分布式处理的软件框架, 可以对日志进行数据处理。

Hadoop伪分布式安装:http://www.lishiming.net/thread-5637-1-1.html
Fluentd官网安装文档:http://docs.fluentd.org/articles/install-by-rpm

Fluentd安装:
一、安装准备
1)、调整时间
2)、 修改最大文件数

ulimit -n  查看
  1. vi  /etc/security/limits.conf
  2. root soft nofile 65536
  3. root hard nofile 65536
复制代码
3)、修改内核
  1. vi /etc/sysctl.conf 
  2. net.ipv4.tcp_tw_recycle = 1
  3. net.ipv4.tcp_tw_reuse = 1
  4. net.ipv4.ip_local_port_range = 10240    65535
复制代码
二、 用RPM包安装td-agent (td-agent是Fluentd的稳定安装包)
  1. curl -L http://toolbelt.treasure-data.com/sh/install-redhat.sh | sh
复制代码
三、启动
  1. /etc/init.d/td-agent start 
  2. /etc/init.d/td-agent status
复制代码
配置文件:/etc/td-agent/td-agent.conf

重新加载配置文件:
  1. /etc/init.d/td-agent reload
复制代码
默认配置是从HTTP取日志,然后输出到/var/log/td-agent/td-agent.log。可修改相应配置文件
用curl测试
  1. curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
  2. [root@test td-agent]# tail -f /var/log/td-agent/td-agent.log                                    
  3. </ROOT>
  4. 2013-09-25 14:54:11 +0800 [info]: adding source type="forward"
  5. 2013-09-25 14:54:11 +0800 [info]: adding source type="http"
  6. 2013-09-25 14:54:11 +0800 [info]: adding source type="debug_agent"
  7. 2013-09-25 14:54:11 +0800 [info]: adding match pattern="td.*.*" type="tdlog"
  8. 2013-09-25 14:54:11 +0800 [info]: adding match pattern="debug.**" type="stdout"
  9. 2013-09-25 14:54:11 +0800 [info]: listening fluent socket on 0.0.0.0:24224
  10. 2013-09-25 14:54:11 +0800 [info]: listening dRuby uri="druby://127.0.0.1:24230" object="Engine"
  11. 2013-09-25 14:59:22 +0800 debug.test: {"json":"message"}
复制代码
配置文件参考文档:http://docs.fluentd.org/articles/config-file

配置包含如下几个部分

source: 输入源
match :输出目的地
include:包含其它配置文件等
  1. ##############
  2. <source>
  3.   type tail
  4.   format apache
  5.   path /usr/local/apache/logs/access_log
  6.   tag apache.access
  7. </source>
  8. #其中:
  9. #1.type tail: tail方式是 Fluentd 内置的输入方式,其原理是不停地从源文件中获取新的日志,相当与tail –f命令。
  10. #2.format apache: 指定使用 Fluentd 内置的 Apache 日志解析器。
  11. #3.path: 指定日志文件位置。
  12. #4.tag:tag被用来对不同的日志进行match
  13. <match apache.access>
  14.   type file
  15.   path /usr/local/log/fluent/access
  16. </match>
  17. # Include config files in the ./config.d directory
  18. include config.d/*.conf
  19. ##############
复制代码
四、配置Fluentd与HDFS结合

首先安装Hadoop,见链接http://www.lishiming.net/thread-5637-1-1.html

Fluentd新版本中添加了对HDFS的支持,out_webhdfs插件
td-agent方式默认已经安装out_webhdfs插件
参考文档:http://docs.fluentd.org/articles/http-to-hdfs http://docs.fluentd.org/articles/out_webhdfs#install

测试将本机APACHE文件,output到HDFS。
1、Hadoop要首先建立空的文件系统,并建立日志目录
  1. [root@test log]#hadoop fs -mkdir  /usr/local/log/
  2. //设置权限,否则会报错 “Permission denied: user=webuser, access=WRITE, inode=\\\"log\\\”
  3. [root@test log]#hadoop fs -chmod 777 /usr/local/log/
复制代码
2、设置Hadoop,修改配置文件hdfs-site.xml,加入如下
  1. <property>
  2.   <name>dfs.webhdfs.enabled</name>
  3.   <value>true</value>
  4. </property>
  5. <property>
  6.   <name>dfs.support.append</name>
  7.   <value>true</value>
  8. </property>
  9. <property>
  10.   <name>dfs.support.broken.append</name>
  11.   <value>true</value>
  12. </property>
复制代码
3、Fluentd配置文件内容,input为Apache日志,output为HDFS
  1. <source>
  2.   type tail
  3.   format apache
  4.   path /usr/local/apache/logs/access_log
  5.   tag td.apache.access
  6. </source>
  7. #<match td.*.*>
  8. #  type file
  9.   path /usr/local/log/
  10. #</match>
  11. <match td.*.*>
  12.   type webhdfs
  13.   host test
  14.   port 50070
  15.   path /usr/local/log/%Y%m%d_%H/access.log.${hostname}
  16.   flush_interval 10s
  17. </match>
复制代码
4、查看日志内容是否成功,访问APACHE,成功则会在HDFS中产生相应日志文件
  1. [root@test log]# hadoop fs -ls /usr/local/log/
  2. Found 1 items
  3. drwxrwxrwx   - webuser supergroup          0 2013-09-29 14:14 /usr/local/log/20130929_14
复制代码

日志output到Hadoop后,可以编写相应的MapReduce程序进行分析处理

测试过程中,如果配置文件修改错误,会无法重装加载配置文件,td-agent进程关闭的情况,可查看日志文件/var/log/td-agent/td-agent.log,会有报错相关信息

 

转自:http://www.aminglinux.com/bbs/forum.php?mod=viewthread&tid=5636

 

 

你可能感兴趣的:(分析,日志收集,Fluentd)