使用Apache Flume管道Apache服务器日志

时间:2013-01-22 04:18:24

标签: apache apache2 flume

我正在使用Apache Flume 1.3版并引用Apache Flume User guide

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

我的疑问是:

  1. 我提到的是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
    
  2. 我怀疑Apache Flume和Cloudera Flume是否同步。

    1. 根据Apache Server的文档: Apache httpd能够通过管道将错误和访问日志文件写入另一个进程,而不是直接写入文件。 如何为正在运行的Apache Flume Agent实现此功能,即Apache conf
    2. 中的条目必须是什么

      CustomLog“|?”通用

1 个答案:

答案 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时,您将丢失一些日志记录事件。如果你想要一个更持久的解决方案,你需要拾取(旧/旋转)日志文件并在处理时移动/删除。