我正在寻找最快的方法来记录消息,而不需要生产者在发送日志时连接到任何服务器。最好的情况就是快速地将消息记录到本地(内存、本地消息队列),然后退出。然后,一个单独的进程将其出队,并将其发送给实际的使用者(可能使用持久连接)。这有助于通过防止额外的连接来降低生产者进程(例如web服务器句柄)的处理速度。
我会对使用PHP的RabitMQ感兴趣吗?
发布于 2013-04-14 04:13:04
Logstash (http://www.logstash.net/)在您选择的本地日志文件上设置侦听器,然后通过AMQP (RabbitMQ,我上一次检查是在2012年)将它们作为消息发送到您选择的中央日志存储/数据库(例如,mongoDB实例)。
您可以自定义Logstash侦听器,以便在将日志文件发送到队列代理之前,只从日志文件中筛选出某些有趣的日志消息类型/代码。
在此之后,您可以将Graylog2 (http://graylog2.org/)设置为一个有用的界面,用于读取、排序和过滤来自所有服务器的日志,这些日志按时间顺序组织在一个视图中(假设您的服务器时间足够同步)。
发布于 2012-05-22 20:08:15
发布于 2012-05-24 13:12:23
您提出的解决方案将会起作用。但是,由于实际连接到消息收发服务器的生产者可能无法向消息收发服务器发送消息,因为日志将以更快的速度被放入存储器队列中,所以消息很有可能在内存队列中积聚。
https://stackoverflow.com/questions/10700193
复制相似问题