В одноузловом эластичном поиске вместе с logstash мы протестировали парсинг файлов размером 20 и 200 МБ для эластичного поиска на разных типах экземпляров AWS, например Medium, Large и Xlarge.
Конфигурация logstash
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 ГБ 64-разрядная сетевая производительность: средний экземпляр, работающий с: Logstash, эластичным поиском
Сценарий: 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 Большой 15,25 ОЗУ 2 ядра Хранение: 32 ГБ SSD 64-разрядная Сетевая производительность: умеренная Работа экземпляра с: Logstash, эластичным поиском
**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, эластичным поиском
**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
Я хотел знать
ценю любую помощь в этом, поскольку я новичок в logstash и эластичном поиске.
Как мы отслеживаем logstash:
1) Отслеживайте эластичность напрямую: сделайте простой вызов about / info для ES api (если ES выходит из строя, вы не работаете)
2) Следите за эластичной статистикой. Зависит от того, как вы используете. Вы можете искать активность (количество документов, размер индекса и т. Д.) Или другую статистику, которая имеет значение для вашего env. Если вы видите, что статистика движется, вы знаете, что logstash успешно отправляет сообщения в ES.
3) Сам Logstash: просто выберите порт, который он прослушивает. Если порт гаснет ... logstash умер / не работает.
1- Если вы хотите прокомментировать свою производительность, нам нужно увидеть конфигурацию вашего фильтра logstash.
Производительность Logstash - это сочетание настроек фильтра / вывода / рабочего.
Больше фильтра = меньше событий / секунд.
Хорошая идея - широко масштабировать, если у вас есть проблемы с logstash perf. Больше рабочих экземпляров может увеличить производительность событий / секунд. Люди работают с отправителем в очередь rabbimq и масштабируют узел logstash позади.
2- см. 1
3- есть ограничения ввода-вывода, и иногда лучше иметь больше узлов. Elasticsearch предназначен для работы с шардом / узлом и т. Д.
4- logstash мониторинг - это пока только мониторинг процесса. Есть некоторые подсказки о том, как это сделать с помощью отладчика java, но вы должны найти информацию в группе пользователей logstash. Для elasticsearch есть чудо, чтобы контролировать ваш кластер elasticsearch.