2

我有加上Redis的代理,其与光交通完全工作的LogStash配置(10个消息/秒)。每个ELK服务运行在其各自独立的2GB服务器上。我现在有了一个新的要求来记录(每秒200条消息)。我们现在有一个新的要求来记录(200条消息/秒)。非常低性能随着LogStash

Tomcat-> LogStash-> Redis的工作速度足够快(每秒超过250条消息),但第二个LogStash似乎不够快,无法从Redis中消耗每秒超过100条消息。目前它每秒处理大约10条消息。这可能是由于我的邮件大小为(我在每封邮件中记录了一个20kb的Xml字符串)

我的第二个lumberjack.conf经过多次调整后(我已经在命令行中应用了-w 10)进行并行处理,看上去如下所示。我还评论了所有多线过滤器,因为它们不是线程安全的。

input { 
    #Read Log4J messages from the Redis Broker (general errors). 
    redis { 
     host => "192.168.0.231" 
     type => "qalogs" 
     port => 6379 
     data_type => "list" 
     key => "lsqalogs" 
     batch_count => 100 
     threads => 8 
     codec => "json" 
    } 
    output { 
    if [type] == "avail" { 
     if [push_index] { 
     elasticsearch { 
      index => "%{push_index}-%{push_type}-%{+YYYY.MM.dd}" 
      hosts => ["192.168.0.230:9200"] 
      flush_size => 50 
      manage_template => false 
      workers => 40 
     } 
     } else { 
     elasticsearch { 
      index => "log-%{type}-%{+YYYY.MM.dd}" 
      hosts => ["192.168.0.230:9200"] 
      flush_size => 50 
      manage_template => false 
      workers => 40 
     } 
     } 
    } 
    } 

我一直在这几个月,现在,有自动化完整的堆栈安装..我唯一的问题是性能是可怕的。

第二LogStash服务器用0.3负载平均运行因此相信它肯定可以处理100 + /消息/秒的热。

我使用LogStash 2.1V,ES 2.1,Redis3在不同的服务器上2GB。我真的很欣赏这方面的一些灯光?

在此先感谢。

回答

3

尝试在您的elasticsearch输出中减少您的工作人员。

blog post by elastic on Logstash optimization(重点煤矿):

...修改您的输出(最明显的是“打工皇帝”的Elasticsearch输出选项,这将可能是最好的在核心数量配置变量你的机器有)...

这篇文章提出的另一件事是瓶颈可能是你的elasticsearch。对于elasticsearch节点,2GB内存很小,问题可能在于资源阻塞elasticsearch而不是错误配置的logstash。

+0

感谢您的信息。我现在已经将所有LogStash&ES从2GB升级到4GB(四核)服务器,希望看到更好的性能。我也将工作线程的数量减少到了4.但问题仍然存在(每秒超过10条消息)。 – Shawn

+0

我用'flush_size => 50'确定了一个瓶颈,增加了500个,我看到了一个小小的改进。 LogStash使用者现在每秒从REDIS读取约30条消息。 – Shawn

+0

感谢您提供的所有信息..我可以通过删除所有grok过滤器来解决此问题。事实证明,某些Grok过滤器(即后缀)导致LogStash变慢。 删除这些grok过滤器后,我经历了超过500+信息/秒,这对我来说已经足够了。 将后缀过滤器移至另一个不会干扰此系统的LogStash实例。 再次感谢您的所有建议。我已经将它们实施为最佳实践。 – Shawn