Logstash和Kafka有什么不同?

28

Logstash和Kafka有何不同?如果两者相同,哪个更好?为什么?

我发现这两个都是管道,可以将数据推送进行进一步处理。

3个回答

26

Kafka比Logstash更强大。例如,将数据从PostgreSQL同步到ElasticSearch,Kafka连接器可以与Logstash完成类似的工作。

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

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


19

Logstash是一个工具,可用于收集、处理和转发事件和日志消息。通过多个input插件来实现收集。您可以使用Kafka作为输入插件,它将从Kafka主题读取事件。一旦输入插件收集到数据,它就可以由任意数量的过滤器进行处理,这些过滤器修改并注释事件数据。最后,事件被路由到output输出插件,可以将事件转发到包括Elasticsearch在内的各种外部程序。

Kafka是一个消息传递软件,可以持久化消息,具有TTL和消费者拉取数据的概念。它的一些用途可能包括:

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

因此,两者都有自己的优缺点,但这取决于您的要求。


11

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

场景1:事件峰值

您部署的应用程序存在一个糟糕的bug,会大量记录信息,从而淹没了您的日志基础设施。在其他多租户使用案例中,如游戏和电子商务行业,这种数据突发情况也相当普遍。在这种情况下,使用像Kafka这样的消息代理来保护LogstashElasticsearch免受潮涌影响。

enter image description here

场景2:无法连接 Elasticsearch

如果无法连接Elasticsearch,并且有多个数据源正在流向Elasticsearch,而您又无法停止原始数据源,则Kafka这样的消息代理可能会对您有所帮助!如果您使用Kafka进行Logstash船只和索引器架构,可以继续从边缘节点流式传输数据,并将它们暂时存储在Kafka中。当Elasticsearch重新启动时,Logstash将从上次离开的地方继续工作,并帮助您追赶数据积压。

整篇博客在这里,介绍了Logtash和Kafka的使用案例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接