我有一个分布在 7 台服务器上的移动服务,每台服务器都执行特定的任务。我想从他们那里记录信息,然后从他们那里获得商业智能。我已经将它四舍五入到 Flume。我如何使用它来收集信息?我的系统是用 PHP 编写的。水槽是否适用于 PHP?
2 回答
这取决于您的需求以及您的服务器环境是什么样的。我可以告诉你的一件事是 Flume 没有与 PHP 直接集成。但是,还有其他方法可以解决这个问题。
我正在运行托管在 Amazon EC2 中的服务器,运行 rsyslog + flume 的组合。在我的设置中,我从在 linux 服务器上运行 nginx 的服务器收集 Web 日志。nginx 服务器将 web 请求日志作为 syslog 消息发送到 rsyslog;rsyslog 向我的中央水槽收集器发出 tcp 请求;水槽收集器使用 syslogTcp 接收器监听这些消息;水槽收集器将消息转发到 Amazon S3。然后,我在稍后的某个时间点使用 Amazon EMR 分析日志文件。
在您的情况下,PHP 也可以配置为写入系统日志(http://php.net/manual/en/function.syslog.php);因此,您可以进行类似的设置,并让 syslog 将日志转发到中央水槽收集器节点。
如果你不想依赖 syslog 消息,你也可以在你的服务器上运行 Flume 客户端。可以将flume客户端配置为使用flume的tail sink来尾随本地日志文件,或者您可以使用flume的tailDir sink尾随指定目录中的所有日志文件并将它们流式传输到flume收集器。
Flume 的一个很好的好处是,您可以将其配置为以非常高的概率将消息传递到重要消息的目的地,而其他消息可以以较低的传递要求发送。
Flume 用户指南是您获取更多详细信息的最佳位置:http: //flume.apache.org/FlumeUserGuide.html
另一个值得关注的地方是跳转到 freenode 并加入 #flume 频道。
Flume 代理可以安装在各种操作系统上,包括 Windows 和 Linux。
所以简而言之,如果你在这些操作系统中的任何一个上托管,你没有理由不能使用 Flume 来聚合来自多个盒子的日志。