我正在使用Apache Flume 1.3版并引用Apache Flume User guide。
我的目标是pipe Apache server logs直接进入Apache Flume Agent的频道。如果我的理解是正确的,Apache服务器将不会创建本地文件即。 server.log,error.log但直接将相应的输出写入代理的通道;即使它在日志中写入,代理也不会从这些文件中读取。但至少Apache Server的文档没有提供相同的例子。
我的疑问是:
我提到的是this链接,它与Cloudera Flume有关,而非Apache Flume。我试过这个,但正如预期的那样,Apache服务器发出错误:
/bin/sh: flume: not found
piped log program 'flume node_nowatch -1 -s -n apache -c \\'apache:console|agentBESink("collector");\\'' failed unexpectedly
piped log program 'flume node_nowatch -1 -s -n apache -c \\'apache:console|agentDFOSink("collector");\\'' failed unexpectedly
我怀疑Apache Flume和Cloudera Flume是否同步。
CustomLog“|?”通用
答案 0 :(得分:1)
我正在尝试类似的用例。你的问题是flume命令不再存在了。较新版本的水槽使用命令 flume-ng 。
我在/etc/httpd/conf/httpd.conf中做了什么:
# Default behaviour, but daily-rollover logging (|| does not spawn a new shell)
CustomLog "||/usr/sbin/rotatelogs /var/log/httpd/access_log.%Y-%m-%d 86400" combined
# Send logging to local flume-agent
CustomLog "||/usr/bin/flume-ng avro-client -H localhost -p 10000" combined
flume-agent配置在localhost上有一个avro源绑定,并在端口10000上侦听。还有一个文件通道,在我们的例子中是一个HDFS-sink。
请注意,当Flume-agent崩溃或重启Flume时,您将丢失一些日志记录事件。如果你想要一个更持久的解决方案,你需要拾取(旧/旋转)日志文件并在处理时移动/删除。