Logstash 与 Kafka 有何不同
Posted
技术标签:
【中文标题】Logstash 与 Kafka 有何不同【英文标题】:How Logstash is different than Kafka 【发布时间】:2017-04-13 08:33:19 【问题描述】:Log stash 与 Kafka 有何不同? 如果两者相同,哪个更好?以及如何?
我发现两者都是可以推送数据以进行进一步处理的管道。
【问题讨论】:
【参考方案1】:Kafka 比 Logstash 强大得多。为了将数据从 PostgreSQL 同步到 ElasticSearch,Kafka 连接器可以使用 Logstash 完成类似的工作。
一个关键的区别是:Kafka 是一个集群,而 Logstash 基本上是单实例。您可以运行多个 Logstash 实例。但是这些 Logstash 实例彼此不知道。例如,如果一个实例出现故障,其他实例将不会接管它的工作。 Kafka 自动处理节点关闭。如果你将 Kafka 连接器设置为在分布式模式下工作,其他连接器可能会接管下行连接器的工作。
Kafka 和 Logstash 也可以一起工作。例如,在每个节点上运行一个 Logstash 实例来收集日志,并将日志发送到 Kafka。然后,您可以编写 Kafka 消费者代码来执行您想要的任何处理。
【讨论】:
【参考方案2】:Logstash 是一个可用于收集、处理和转发事件和记录消息的工具。收集是通过多个input
plugins完成的。您可以使用Kafka
作为输入插件,它将从 Kafka 主题中读取事件。一旦输入插件收集了数据,它就可以被任意数量的filters 处理,这些filters 修改和注释事件数据。最后,事件被路由到outpu
t plugins,后者可以将事件转发到包括 Elasticsearch 在内的各种外部程序。
Kafka
是一个消息传递软件,它可以持久化消息,具有 TTL,以及从 Kafka 中提取数据的消费者概念。它的一些用法可能是:
所以简单地说,它们都有自己的优点和缺点。但这完全取决于您的要求。
【讨论】:
【参考方案3】:另外,我想通过场景添加一些东西:
场景 1:事件高峰
您部署的应用存在一个严重错误,即信息被过度记录,导致您的日志基础设施泛滥。在其他多租户用例(例如游戏和电子商务行业)中,这种峰值或数据爆发也相当普遍。在这种情况下使用像 Kafka 这样的消息代理来保护 Logstash 和 Elasticsearch 免受这种激增的影响。
场景 2:Elasticsearch 无法访问
当 elelasticsearch 无法访问时,如果您有许多数据源流入 Elasticsearch,并且您无法停止原始数据源,那么像 Kafka 这样的消息代理可以在这里提供帮助!如果您将 Logstash 运送器和索引器架构与 Kafka 一起使用,您可以继续从边缘节点流式传输数据并将它们临时保存在 Kafka 中。当 Elasticsearch 重新启动时,Logstash 将继续从中断处继续,并帮助您赶上积压的数据。
整个博客是here,关于 Logtash 和 Kafka 的用例。
【讨论】:
以上是关于Logstash 与 Kafka 有何不同的主要内容,如果未能解决你的问题,请参考以下文章