【发布时间】:2017-02-20 15:49:25
【问题描述】:
我有一个 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+/messages/second 的热量。
我在单独的 2GB 服务器上使用 LogStash 2.1v、ES 2.1、Redis3。我真的很希望能对这个领域有所了解?
提前致谢。
【问题讨论】:
标签: multithreading elasticsearch logstash logstash-configuration