<分区>
我有一项移动服务分布在 7 台服务器上,每台服务器都执行特定任务。我想从他们那里记录信息,然后从他们那里获得商业情报。我已将其四舍五入为 Flume。我如何使用它来收集信息? 我的系统是用 PHP 编写的。 flume 可以在 PHP 上运行吗?
<分区>
我有一项移动服务分布在 7 台服务器上,每台服务器都执行特定任务。我想从他们那里记录信息,然后从他们那里获得商业情报。我已将其四舍五入为 Flume。我如何使用它来收集信息? 我的系统是用 PHP 编写的。 flume 可以在 PHP 上运行吗?
最佳答案
这取决于您的需求和您的服务器环境。我可以告诉您的一件事是 Flume 没有与 PHP 直接集成。但是,还有其他解决方法。
我正在运行托管在 Amazon EC2 中的服务器,该服务器运行 rsyslog + flume 的组合。在我的设置中,我从运行在 linux 服务器上运行的 nginx 的服务器收集网络日志。 nginx 服务器将 web 请求日志作为 syslog 消息发送到 rsyslog 中; rsyslog 向我的中央水槽收集器发出 tcp 请求; flume 收集器使用 syslogTcp 接收器收听这些消息; flume 收集器将消息转发到 Amazon S3。然后,我会在稍后的某个时间点使用 Amazon EMR 分析日志文件。
在您的情况下,PHP 也可以配置为写入系统日志 ( http://php.net/manual/en/function.syslog.php );因此,您可以进行类似的设置,让系统日志将日志转发到中央水槽收集器节点。
如果您不想依赖系统日志消息,您还可以在服务器上运行 flume 客户端。 flume 客户端可以配置为使用 flume 的 tail sink 跟踪本地日志文件,或者您可以使用 flume 的 tailDir sink 跟踪指定目录中的所有日志文件,并将它们流式传输到 flume 收集器。
flume 的一个很好的好处是,您可以将它配置为以非常好的概率传送消息,它很可能会到达重要消息的目的地,而其他消息可以以较低的传送要求发送。
flume 用户指南是您获取更多详细信息的最佳场所: http://flume.apache.org/FlumeUserGuide.html
另一个值得一看的地方是跳转到 freenode 并加入#flume channel 。
关于php - 使用 flume 进行分布式日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4171433/