我有一个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。我真的很感激这方面的一些亮点吗?
提前致谢。
答案 0 :(得分:3)
尝试在弹性搜索输出中减少工作人员。
来自blog post by elastic on Logstash optimization(强调我的):
...修改输出上的配置变量(最值得注意的是Elasticsearch输出中的“workers”选项,它可能最佳的机器核心数)...
文章提出的另一件事是瓶颈可能是你的弹性搜索。对于弹性搜索节点,2GB的内存很小,问题可能在于资源被阻塞的弹性搜索,而不是错误配置的logstash。