我有一个移动服务分布在7个服务器上,每个服务器都做一个特定的任务。我想从他们那里记录信息,然后从他们那里获得商业智能。我已经把它四舍五入到了Flume。我如何使用它来收集信息?我的系统是用PHP编写的。flume能在PHP上工作吗?
发布于 2011-02-05 19:01:06
这取决于您的需求和您的服务器环境。我可以告诉你的一件事是,Flume没有与PHP直接集成。然而,还有其他方法可以绕过这一点。
我正在运行亚马逊EC2托管的服务器,运行rsyslog + flume的组合。在我的设置中,我从运行在linux服务器上的nginx的服务器上收集web日志。nginx服务器将web请求日志作为syslog消息发送到rsyslog中;rsyslog向我的中央flume收集器发出tcp请求;flume收集器使用syslogTcp接收器侦听这些消息;flume收集器将消息转发到Amazon S3。然后,我会在稍后的某个时间点使用Amazon EMR分析日志文件。
在您的情况下,还可以将PHP配置为写入syslog (http://php.net/manual/en/function.syslog.php);因此,您可以使用类似的设置,并让syslog将日志转发到中央flume收集器节点。
如果您不想依赖syslog消息,您还可以在服务器上运行flume客户端。可以将flume客户端配置为使用flume的尾部接收器来跟踪本地日志文件,也可以使用flume的tailDir接收器来跟踪指定目录中的所有日志文件,并将它们流式传输到flume收集器。
flume的一个很好的好处是,您可以对其进行配置,使其在重要消息到达目的地的概率非常高的情况下发送消息,而可以使用较低的交付要求发送其他消息。
flume用户指南是获取更详细信息的最佳位置:http://flume.apache.org/FlumeUserGuide.html
另一个值得关注的好地方是跳转到freenode并加入#flume频道。
发布于 2011-02-01 20:13:33
Flume代理可以安装在各种操作系统上,包括Windows和Linux。
因此,简而言之,如果您在这两个操作系统中的任何一个上托管,那么您没有理由不能使用flume来聚合来自多个机器的日志。
https://stackoverflow.com/questions/4171433
复制相似问题