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 是一个可用于收集、处理和转发事件和记录消息的工具。收集是通过多个inputplugins完成的。您可以使用Kafka 作为输入插件,它将从 Kafka 主题中读取事件。一旦输入插件收集了数据,它就可以被任意数量的filters 处理,这些filters 修改和注释事件数据。最后,事件被路由到output plugins,后者可以将事件转发到包括 Elasticsearch 在内的各种外部程序。

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

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

所以简单地说,它们都有自己的优点和缺点。但这完全取决于您的要求。

【讨论】:

【参考方案3】:

另外,我想通过场景添加一些东西:

场景 1:事件高峰

您部署的应用存在一个严重错误,即信息被过度记录,导致您的日志基础设施泛滥。在其他多租户用例(例如游戏和电子商务行业)中,这种峰值或数据爆发也相当普遍。在这种情况下使用像 Kafka 这样的消息代理来保护 LogstashElasticsearch 免受这种激增的影响。

场景 2:Elasticsearch 无法访问

当 elelasticsearch 无法访问时,如果您有许多数据源流入 Elasticsearch,并且您无法停止原始数据源,那么像 Kafka 这样的消息代理可以在这里提供帮助!如果您将 Logstash 运送器和索引器架构与 Kafka 一起使用,您可以继续从边缘节点流式传输数据并将它们临时保存在 Kafka 中。当 Elasticsearch 重新启动时,Logstash 将继续从中断处继续,并帮助您赶上积压的数据。

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

【讨论】:

以上是关于Logstash 与 Kafka 有何不同的主要内容,如果未能解决你的问题,请参考以下文章

logstash消费阿里云kafka消息

怎么查看logstash发送到kafka上的数据

ELK 日志系统部署实现

ELK 日志系统部署实现

ELK 日志系统部署实现

ELK 日志系统部署实现