Настройка производительности Elasticsearch
В Elastic Search с одним узлом вместе с logstash, мы протестировали файл с разбором 20 МБ и 200 МБ в Elastic Search на различных типах экземпляра AWS, например, Medium, Large и Xlarge.
Logstash conf
input {
file {
}
}
filter {
mutate
{
gsub => ["message", "\n", " "]
}
mutate
{
gsub => ["message", "\t", " "]
}
multiline
{
pattern => "^ "
what => "previous"
}
grok { match => [ "message", "%{TIME:log_time}\|%{WORD:Message_type}\|%{GREEDYDATA:Component}\|%{NUMBER:line_number}\| %{GREEDYDATA:log_message}"]
match => [ "path" , "%{GREEDYDATA}/%{GREEDYDATA:loccode}/%{GREEDYDATA:_machine}\:%{DATE:logdate}.log"]
break_on_match => false
}
#To check location is S or L
if [loccode] == "S" or [loccode] == "L" {
ruby {
code => " temp = event['_machine'].split('_')
if !temp.nil? || !temp.empty?
event['_machine'] = temp[0]
end"
}
}
mutate {
add_field => ["event_timestamp", "%{@timestamp}" ]
replace => [ "log_time", "%{logdate} %{log_time}" ]
# Remove the 'logdate' field since we don't need it anymore.
lowercase=>["loccode"]
remove => "logdate"
}
# to get all site details (site name, city and co-ordinates)
sitelocator{sitename => "loccode" datafile=>"vendor/sitelocator/SiteDetails.csv"}
date { locale=>"en"
match => [ "log_time", "yyyy-MM-dd HH:mm:ss", "MM-dd-yyyy HH:mm:ss.SSS","ISO8601" ] }
}
output {
elasticsearch{
}
}
Сведения об окружении: Средний экземпляр 3.75 ОЗУ 1 ядро Хранение:4 ГБ SSD 64-битная производительность сети: умеренный экземпляр, работающий с: Logstash, Elastic search
Сценарий: 1
**With default settings**
Result :
20mb logfile 23 mins Events Per/second 175
200mb logfile 3 hrs 3 mins Events Per/second 175
Added the following to settings:
Java heap size : 2GB
bootstrap.mlockall: true
indices.fielddata.cache.size: "30%"
indices.cache.filter.size: "30%"
index.translog.flush_threshold_ops: 50000
indices.memory.index_buffer_size: 50%
# Search thread pool
threadpool.search.type: fixed
threadpool.search.size: 20
threadpool.search.queue_size: 100
**With added settings**
Result:
20mb logfile 22 mins Events Per/second 180
200mb logfile 3 hrs 07 mins Events Per/second 180
Сценарий 2
Подробная информация об окружении: R3 Large 15.25 RAM, 2 ядра. Хранилище:32 ГБ, SSD, 64-битная производительность сети: умеренный экземпляр, работающий с: Logstash, Elastic search
**With default settings**
Result :
20mb logfile 7 mins Events Per/second 750
200mb logfile 65 mins Events Per/second 800
Added the following to settings:
Java heap size: 7gb
other parameters same as above
**With added settings**
Result:
20mb logfile 7 mins Events Per/second 800
200mb logfile 55 mins Events Per/second 800
Сценарий 3
Подробная информация об окружении: R3 High-Memory Extra Large r3.xlarge 30,5 RAM 4 ядра Хранение:32 ГБ SSD 64-битная производительность сети: умеренный экземпляр, работающий с: Logstash, Elastic search
**With default settings**
Result:
20mb logfile 7 mins Events Per/second 1200
200mb logfile 34 mins Events Per/second 1200
Added the following to settings:
Java heap size: 15gb
other parameters same as above
**With added settings**
Result:
20mb logfile 7 mins Events Per/second 1200
200mb logfile 34 mins Events Per/second 1200
Я хотел знать
- Что является эталоном для производительности?
- Соответствует ли производительность эталону или ниже эталона?
- Почему даже после того, как я увеличил JSM упругого поиска, я не смог найти разницу?
- Как я могу контролировать Logstash и улучшить его производительность?
признателен за любую помощь в этом, как я новичок в logstash и упругого поиска.
2 ответа
Как мы контролируем logstash:
1) Мониторинг эластичности напрямую: сделайте простой вызов about/info в ES api (если ES выходит из строя, значит, вы не работаете)
2) Контролировать упругую статистику. Зависит от того, как вы используете. Вы можете посмотреть активность (количество документов, размер индекса и т. Д.) Или другую статистику, которая имеет значение в вашей среде. Если вы видите, что статистика движется, вы знаете, что logstash успешно получает сообщения в ES
3) Сам Logstash: просто нажмите на порт, который он прослушивает. Если порт гаснет... logstash умер / не работает.
1- Если вы хотите оставить комментарий к вашему перфекту, нам нужно посмотреть конфигурацию вашего фильтра logstash.
Производительность Logstash представляет собой сочетание настроек фильтра / вывода / рабочего.
Больше фильтра = меньше событий / секунд.
Хорошая идея - масштабировать, если у вас проблемы с logstash. Больше рабочего больше экземпляра может увеличить событие / сек. Люди работают с отправителем в очереди rabbimq и масштабируют узел logstash позади.
2- см. 1
3 - есть пределы IO, и иногда лучше иметь больше узлов. Elasticsearch предназначен для работы с осколком / узлом и т. Д.
4 - мониторинг logstash - это только мониторинг процесса на данный момент. Есть некоторые подсказки о том, как сделать это с помощью отладчика Java, но вы должны найти информацию в группе пользователей logstash. Для упругого поиска есть чудо, чтобы следить за вами.