LogStash

时间:2017-02-20 15:49:25

标签: multithreading elasticsearch logstash logstash-configuration

我有一个LogStash配置和一个REDIS代理,可以很好地处理轻量级流量(10个消息/秒)。每个ELK服务都在各自独立的2GB服务器上运行。

Tomcat(Log4j) - > LogStash - > Redis - > LogStash-> ES-> Kibana .. 我现在有一个新的要求登录(200条消息/秒)。

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 Load-Avg运行,因此我相信它当然可以处理100 + /消息/秒的热量。

我在单独的2GB服务器上使用LogStash 2.1v,ES 2.1,Redis3。我真的很感激这方面的一些亮点吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

尝试在弹性搜索输出中减少工作人员。

来自blog post by elastic on Logstash optimization(强调我的):

  

...修改输出上的配置变量(最值得注意的是Elasticsearch输出中的“workers”选项,它可能最佳的机器核心数)...

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