Kafka、Fluentd 和 Logstash 中哪种服务器日志记录解决方案的处理器消耗更少?

Which server logging solution is less processor consuming among Kafka, Fluentd and Logstash?

我有一个分布式日志记录系统来监视负载平衡的服务器实体。对我来说最基本的是,服务器不会在日志记录过程中投入大量处理器时间,从而允许应用程序 运行 使用尽可能多的资源。

很高兴知道这些备选方案中的哪一个 "cheaper" 就处理器时间而言,或者以防万一,就此问题推荐任何其他解决方案。

fluentd 和 logstash 都有处理器成本,最好不要 运行 它们在您的应用程序服务器上。对于,kafka,因为它只是它的客户端在你的服务器上运行,所以它应该更便宜,但是你的服务器的稳定性取决于kafka服务器的稳定性。

更好的解决方案可能是记录到文件并安装更便宜的日志 collector/forwarder 以将日志文件转发到另一台服务器,以便 运行 与任何日志解析器连接。

你应该只使用一个简单的轻量级 rsyslog, syslog-ng or syslogd

取决于您想使用哪些技术?

首先,Kafka不是日志收集器。它是一个分布式消息队列,可以作为消费者和生产者与 Fluentd 和 Logstash 等日志收集器一起工作。

让我们输入一些数字而不是意见。

  1. CPU 用法:这取决于您使用 Fluentd and/or Logstash 在客户端进行了多少过滤和数据处理。如果您进行最少的处理,两者都可以每秒处理 10,000 多条消息。两者都可以利用多个 CPUs(例如 http://docs.fluentd.org/articles/in_multiprocess
  2. 内存:Fluentd 使用大约 40MB 内存,Logstash 使用大约 100MB 内存。如果这太多了,Logstash 将 Beats 和 Fluentd 作为 Fluentd 转发器 (https://github.com/fluent/fluentd-forwarder)。

我们正在使用 Flume 来收集日志并传送到 Kafka - CPU 使用率非常低,而且在内存方面 - 这取决于你想要做多少缓冲. 如果您需要自定义 parsing/routing 数据,您也可以编写自己的 Flume 拦截器。