使用apacheflume对apache服务器日志进行管道处理

dddzy1tm  于 2021-06-03  发布在  Flume
关注(0)|答案(1)|浏览(338)

我使用的是ApacheFlumeVersion1.3,并参考了ApacheFlume用户指南。
我的目标是将apache服务器日志直接导入apacheflume代理的通道。如果我的理解是正确的,apache服务器将不会创建本地文件。server.log、error.log,但直接将相应的输出写入代理的通道;即使它在日志中写入,代理也不会读取这些文件。但至少apache服务器的文档没有提供相同的示例。
我的问题是:
我引用了这个链接,它属于clouderaflume而不是apacheflume。我尝试了这个,但正如预期的那样,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

我怀疑apacheflume和clouderaflume是否同步。
根据apache服务器的文档:apachehttpd能够通过管道将错误和日志文件写入另一个进程,而不是直接访问文件。对于正在运行的apacheflume代理,即apacheconf中的条目,如何实现这一点
自定义日志“|?”公用

piztneat

piztneat1#

我在尝试一个类似的用例。您的问题是flume命令不再存在。较新版本的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代理配置在localhost上有一个avro源绑定,并监听端口10000。还有一个文件通道和一个hdfs接收器。
请注意,当flume代理崩溃或重新启动flume时,您将丢失一些日志事件。如果您想要一个更持久的解决方案,您需要拾取(旧的/旋转的)日志文件并在处理时移动/删除。

相关问题