上篇笔记对Flume的使用场景和系统架构做了介绍,本篇笔记以实例说明Flume的配置方法。下面开始正文。
1. Flume使用实例
1.1 配置
Flume agent的3个组件及其拓扑关系是在配置文件中指定的,总的原则是必须列出source/channel/sink的name/type等重要的配置项,并通过channel将source(s)和sink(s)连接起来,此外,1个source可以指定多个channel,而1个sink只能接收来自1个channel的数据。
这里给出的是部署1套含1个source、1个channel、1个sink的Flume agent的配置示例,更多的配置规则可以参考Flume User Guide的Configuration部分。
假设外部数据源是nginx的access_log,为保证数据不丢失(通过ExecSource执行tail –F /path/to/access_log更简单,但在flume-agent进程异常时会丢失数据),我们选用Spooling Directory Source类型的source,选用memory类型的channel,选用file_roll类型的sink以便调试。
此外,我们借助logrotate工具定时切分nginx的access_log并将切分后的文件移入spooling directory source目录,以便Flume的Source检测并处理该文件。
满足上述需求的配置文件如下所示。
agent_test.sources = spool-src agent_test.channels = mem-chan agent_test.sinks = logger-sink agent_test.sources.spool-src.type = spooldir agent_test.sources.spool-src.channels = mem-chan agent_test.sources.spool-src.spoolDir = /home/slvher/tools/nginx-logs.bak agent_test.sinks.logger-sink.type = file_roll agent_test.sinks.logger-sink.channel = mem-chan agent_test.sinks.logger-sink.sink.directory = /home/slvher/tools/flume-1.5.2/apache-flume-1.5.2-bin/flume_sink.dump agent_test.sinks.logger-sink.sink.rollInterval = 3600 agent_test.channels.mem-chan.type = memory agent_test.channels.mem-chan.capacity = 10000备注:logrotate工具的用法之前的一篇笔记提到过,这里略过。
1.2
测试
配置完成后,启动Flume,参考命令如下:
export CLASSPATH=/home/slvher/tools/flume-1.5.2/apache-flume-1.5.2-bin/lib/*.jar:/home/slvher/tools/hadoop-client/java6/lib/*.jar nohup ./bin/flume-ng agent -n agent_test -c conf -f conf/flume-conf.properties -f conf/log4j.properties > logs/start.log 2>&1 &注意:如果在通过./bin/flume-ng脚本启动Flume时遇到如下shell语法错误
bin/flume-ng: line 102: syntax error in conditional expression: unexpected token `(' bin/flume-ng: line 102: syntax error near `slf4j-(a' bin/flume-ng: line 102: `if [[ $PIECE =~ slf4j-(api|log4j12).*\.jar ]]; then'则需要修改该提示行处的if条件表达式(将正则表达式用双引号括起来),即将原来的
2. 监控
根据Flume文档关于Monitoring的说明,其监控机制仍在完善中,目前可用的机制是在启动Flume agent时通过-D指定监控的server:port,细节可去查看文档。
【参考资料】
1. Flume User Guide - Configuration
2. Flume User Guide -
Monitoring
========================= EOF =========================
日志收集系统Flume调研笔记第2篇 - Flume配置及使用实例
原文地址:http://blog.csdn.net/slvher/article/details/45370285