Logstash 与 Kafka 有何不同

How Logstash is different than Kafka

Log stash 与 Kafka 有何不同? 如果两者相同,哪个更好?以及如何?

我发现两者都是可以推送数据以进行进一步处理的管道。

Logstash is a tool that can be used to collect, process and forward events and log messages. Collection is accomplished through a number of input plugins. You can use Kafka as an input plugin, where it will read events from a Kafka topic. Once an input plugin has collected data it can be processed by any number of filters which modify and annotate the event data. Finally events are routed to output plugins 可以将事件转发到各种外部程序,包括 Elasticsearch。

其中 Kafka 是一种消息传递软件,它可以持久保存消息,具有 TTL 以及从 Kafka 中提取数据的消费者概念。它的一些用法可能是:

  • 流处理
  • 网站Activity跟踪
  • 指标收集和监控
  • 日志聚合

简单来说,两者各有优缺点。但这完全取决于您的要求。

Kafka 比 Logstash 强大得多。为了将数据从 PostgreSQL 同步到 ElasticSearch,Kafka 连接器可以使用 Logstash 完成类似的工作。

一个关键区别是:Kafka 是一个集群,而 Logstash 基本上是单实例。您可以 运行 多个 Logstash 实例。但是这些 Logstash 实例并不知道彼此。例如,如果一个实例宕机,其他实例将不会接管它的工作。 Kafka 会自动处理该节点。如果您将 Kafka 连接器设置为在分布式模式下工作,则其他连接器可以接管下连接器的工作。

Kafka 和 Logstash 也可以一起工作。例如运行在每个节点上一个Logstash实例来收集日志,并将日志发送到Kafka。然后您可以编写 Kafka 消费者代码来执行您想要的任何处理。

另外,我想通过场景补充一些东西:

场景 1:事件尖峰

您部署的应用程序有一个严重的错误,信息记录过多,淹没了您的日志记录基础设施。这种峰值或数据爆发在其他多租户用例中也很常见,例如,在游戏和电子商务行业。在这种情况下使用像 Kafka 这样的消息代理来保护 LogstashElasticsearch 免受这种激增的影响。

场景 2:无法访问 Elasticsearch

当无法访问 eleasticsearch 时,如果您有大量数据源流入 Elasticsearch,并且您无力停止原始数据源,那么像 Kafka 这样的消息代理可能会在这里提供帮助!如果您将 Logstash 发送器和索引器架构与 Kafka 一起使用,您可以继续从边缘节点流式传输数据并将它们暂时保存在 Kafka 中。当 Elasticsearch 恢复时,Logstash 将继续它停止的地方,并帮助您赶上积压的数据。

整个博客都是here关于 Logtash 和 Kafka 的用例。