这可能是非常通用的,取决于您的环境'问题类型,但我想知道基于您在处理logstash和日志聚合方面的经验的最佳实践。
所以,我正在尝试在我们的生产环境中集成logstash,并且我们有大量的日志事件(65K /分钟),这些事件将被收集在一个中心位置。我有10个VM放在不同的物理机器上,它们都将相应的日志发送到位于不同物理机箱上的logstash服务器。为了做一些分析和清理,我在每个日志事件(5个字段/事件)中添加了一些字段。问题是,我应该在哪里进行过滤并将字段添加到事件中?在10个虚拟机或服务器上运行的logstash代理上,每分钟收集650K消息?
即使我已经为服务器分配了足够的内存(32GB)并且它可以处理所有这些事件,但它会是" OK"在服务器上处理这么多的事件,或者我应该在客户端以更少的内存处理它们,但是不得不通过网络发送这些事件,这可能会导致网络拥塞。
非常感谢任何帮助和/或建议/经验!
答案 0 :(得分:1)
就个人而言,我会采用“服务器”方式并在所述服务器上运行一个代理。强大的服务器应该很容易65 /分钟。主要有两个原因:
首先,如果您需要更改任何处理规则(GROK模式,KV规则等),您只需要在这台计算机上执行此操作,重新启动logstash进程,然后完成。
其次,由于所有处理都将在服务器上完成,因此您不必安装Java并在VM上分配这些资源。如果这些机器正在做其他事情,这可能是一个巨大的胜利。
在生产中,我让所有运行Logstash-Forwarder的应用服务器将所有原始日志转发到Logstash代理服务器上,该服务器执行所有日志的收集和处理。还没有任何问题。
答案 1 :(得分:1)
将完整的logstash作为托运人运行有两个好处:
这样做的缺点是:
在任何地方运行JVM都不是很有吸引力,所以我放弃了好处并运行了一个轻量级的托运人(logstash-forwarder)来将日志发送到集中式机器。
至于添加字段,在集中式计算机上执行此操作会阻止您通过网络传输额外信息。
10k事件/秒对于logstash和elasticsearch来说是一个不错的负载。
祝你好运!答案 2 :(得分:0)
我总是发现将Logstash与其处理的数据放在同一个盒子上最容易。在那里,您可以预处理和按摩数据,然后将其发送到ElasticSearch进行存储和搜索。
如果那是不可能的,那么它确实取决于您的环境和情况。在这种情况下,我会在您的服务器上执行此操作,因为管理额外字段的配置将是单点,并且听起来它具有足够的马力。