2013-01-22 63 views
1

我使用的是Apache Flume 1.3版,并提及Apache Flume User guide使用Apache Flume管道Apache服务器日志

我的目标是将pipe Apache server logs直接放入Apache Flume Agent的Channel。如果我的理解是正确的,Apache服务器将不会创建本地文件即, server.log,error.log,但直接将相应的输出写入代理的通道;即使它在日志中写入,代理也不会从这些文件中读取。但至少Apache服务器的文档没有提供相同的例子。

我的查询是:

  1. 我提到this链接,属于Cloudera的水槽的建立而不是Apache水槽。我试过,但如预期,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的水槽的水槽Cloudera的在同步之中。

  1. 按照Apache服务器的文档: 的Apache httpd可以通过管道写入错误和访问日志文件到另一个进程,而不是直接到文件中。 如何做到这一点的运行Apache水槽代理即什么必须在Apache的conf

的CustomLog条目“|?”共同

回答

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 

水槽剂配置有在localhost一个阿夫罗源绑定和侦听端口10000。另外一个文件的信道在我们的例子中是一个HDFS接收器。

请注意,当Flume-agent崩溃或重新启动Flume时,您将失去一些记录事件。如果您想要更持久的解决方案,您需要拾取(旧/旋转)日志文件并在处理时移动/移除。