У меня есть конфигурация LogStash в сочетании с брокером REDIS, который отлично работает с легким трафиком (10 сообщений/секунд). Каждая услуга ELK работает на соответствующем независимом сервере 2 ГБ.Очень низкая производительность с LogStash
Tomcat (Log4j) -> LogStash -> Redis -> LogStash-> ES-> Kibana .. У меня теперь есть новое требование для регистрации (200 сообщений в секунду).
Tomcat-> LogStash-> Redis работает достаточно быстро (250+ сообщений в секунду), однако второй LogStash не выглядит достаточно быстрым, чтобы потреблять 100+ сообщений в секунду из Redis. В настоящее время он делает около 10 сообщений в секунду. Может ли это быть связано с моим размером сообщения (я регистрирую строку в 20 килобайтах в каждом сообщении).
Мой второй 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 +/сообщений в секунду.
Я использую LogStash 2.1v, ES 2.1, Redis3 на разных серверах 2 ГБ. Я бы очень признателен за освещение этой области?
Спасибо заранее.
Благодарим за информацию. Теперь я обновил все LogStash & ES с 2 ГБ до 4 ГБ (четырехъядерные) серверы в надежде увидеть несколько более высокую производительность. Я также уменьшил количество рабочих потоков до 4. Однако проблема по-прежнему сохраняется (10+ сообщений в секунду). – Shawn
Я определил одно узкое место с 'flush_size => 50', увеличив его на 500, я увидел небольшое улучшение. Теперь потребитель LogStash считывает около 30 сообщений в секунду из REDIS. – Shawn
Спасибо за всю информацию. Я смог решить эту проблему, удалив все фильтры grok. Оказывается, некоторые фильтры grok (то есть postfix) приводили к замедлению LogStash. После удаления этих фильтров grok я испытал более 500 сообщений в секунду, что более чем достаточно для меня. Фильтры postfix были перемещены в другой экземпляр LogStash, где он не будет мешать этой системе. Еще раз спасибо за советы. Я реализовал их как лучшие практики. – Shawn