Настройка производительности 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

Я хотел знать

  1. Что является эталоном для производительности?
  2. Соответствует ли производительность эталону или ниже эталона?
  3. Почему даже после того, как я увеличил JSM упругого поиска, я не смог найти разницу?
  4. Как я могу контролировать 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. Для упругого поиска есть чудо, чтобы следить за вами.

Другие вопросы по тегам