【问题标题】:Where should I process log events for logstash ? (Agent vs Server )我应该在哪里处理 logstash 的日志事件? (代理与服务器)
【发布时间】:2014-12-25 15:20:34
【问题描述】:

这可能是一个非常通用的“取决于您的环境”类型的问题,但我想根据您在处理 logstash 和日志聚合方面的经验了解最佳实践。

因此,我正在尝试将 logstash 集成到我们的生产环境中,并且我们有大量日志事件(65K/分钟)将被收集在一个中心位置。我有 10 个虚拟机,它们放置在不同的物理机器上,它们都会将各自的日志发送到不同物理机器上的 logstash 服务器。为了进行一些分析和清理,我为每个日志事件添加了更多字段(5 个字段/事件)。问题是,我应该在哪里进行过滤并将字段添加到事件中?在 10 个虚拟机上运行的 logstash 代理上还是在每分钟收集 650K 消息的服务器上?

即使我已经为服务器分配了足够的内存(32GB)并且它可以处理所有这些事件,在服务器上处理这么多事件是否“可以”,或者我应该在客户端处理大量事件吗?内存更少,但承担了通过网络发送这些事件的成本,这可能会导致网络拥塞。

非常感谢任何帮助和/或建议/经验!

【问题讨论】:

    标签: logging elasticsearch logstash kibana


    【解决方案1】:

    我一直认为将 Logstash 与其处理的数据放在同一个盒子上是最容易的。在那里,您可以对数据进行预处理和处理,然后将其发送到 ElasticSearch 进行存储和搜索。

    如果这不可能,那么它确实取决于您的环境和情况。在这种情况下,我会在您的服务器上执行此操作,因为这将是管理额外字段配置的单点,并且听起来它有足够的马力。

    【讨论】:

      【解决方案2】:

      就个人而言,我会采用“服务器”方式并在所述服务器上运行一个代理。对于功能强大的服务器来说,65/分钟应该很容易。主要有两个原因:

      1. 首先,如果您需要更改任何处理规则(GROK 模式、KV 规则等),您只需在这台机器上执行此操作,重新启动 logstash 进程,瞧,完成。

      2. 其次,由于所有处理都将在服务器上完成,因此您不必安装 Java 并在 VM 上分配这些资源。如果这些机器正在做其他事情,这可能是一个巨大的胜利。

      在生产环境中,我让所有应用服务器运行 Logstash-Forwarder,以将其所有原始日志转发到 Logstash 代理服务器,该代理服务器完成所有日志的收集和处理。还没有遇到任何问题。

      【讨论】:

        【解决方案3】:

        以托运人的身份运行完整的 Logstash 有两个好处:

        • 您可以为每台分布式机器添加一点负载 处理,而不是需要更强大的集中式机器 处理所有信息。
        • 您可以分析和限制发送到中心机的信息(忽略某些日志条目等),从而节省 网络带宽。

        这样做的缺点是:

        • 您在每台机器上运行 JVM!
        • 您必须在进行更改时将配置分发到每台计算机。

        到处运行 JVM 不是很有吸引力,所以我放弃了好处,运行了一个轻量级的 shipper(logstash-forwarder)来将日志发送到中心化机器。

        至于添加字段,在集中式机器上进行会阻止您通过网络传输额外的信息。

        10k 事件/秒对于 logstash 和 elasticsearch 来说是一个不错的处理负载。

        祝你好运!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-21
          • 2015-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-01
          • 1970-01-01
          • 2022-01-17
          相关资源
          最近更新 更多