Ajuste de desempenho do Elasticsearch

4

Em uma pesquisa elástica de nó único junto com o logstash, testamos com análise de 20mb e 200mb de arquivo para Elastic Search em diferentes tipos da instância da AWS, ou seja, médio, grande e 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{
     }

}

Detalhes do ambiente: Instância média 3,75 RAM 1 núcleos Armazenamento: SSD de 4 GB Desempenho de rede de 64 bits: Moderado Instância em execução com: Logstash, pesquisa elástica

Cenário: 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

Cenário 2

Detalhes do ambiente: R3 Large 15,25 RAM 2 núcleos Armazenamento: SSD de 32 GB Desempenho de rede de 64 bits: Moderado Instância em execução com: Logstash, pesquisa elástica

**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

Cenário 3

Detalhes do ambiente: R3 Alta Memória Extra Grande r3.xlarge 30,5 RAM 4 núcleos Armazenamento: SSD de 32 GB Desempenho de Rede de 64 bits: Moderado Instância em execução com: Logstash, pesquisa elástica

**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

Eu queria saber

  1. Qual é a referência para o desempenho?
  2. O desempenho atende ao índice de referência ou está abaixo do índice de referência
  3. Por que, mesmo depois de eu ter aumentado, a JVM elasticsearch não conseguiu encontrar a diferença?
  4. como faço para monitorar o Logstash e melhorar seu desempenho?

agradeço qualquer ajuda sobre isso como iam novo para logstash e pesquisa elástica.

    
por Devaraj 18.02.2015 / 10:50

2 respostas

0

1- Se você quiser comentar o seu perf nós precisamos ver sua configuração do filtro logstash.

O desempenho do Logstash é uma mistura de configuração de filtro / saída / trabalho.

Mais filter = menos evento / segundos.

Uma boa ideia é escalar em largura se você tiver problemas de logstash perf. Mais trabalhador mais instância poderia aumentar evento / segundo perf. As pessoas trabalham com remetente para queu rabbimq e escalam o nó logstash para trás.

2- veja 1

3- há limites de OI e, em alguns casos, é melhor ter mais nós. Elasticsearch é projetado para trabalhar com shard / node etc.

4- O monitoramento do logstash é apenas o monitoramento do processo no momento. Há alguma pista sobre como fazer isso com o depurador java, mas você precisa encontrar informações no grupo de usuários logstash. Para elasticsearch, é maravilhoso monitorar seu cluster elasticsearch.

    
por 18.02.2015 / 12:24
0

A maneira como monitoramos o logstash:

1) Monitor elástico diretamente: Faça uma simples chamada / info para ES api (se ES cair, você está inoperante)

2) Monitore estatísticas elásticas. Depende de como você usa. Você pode procurar atividade (número de documentos, tamanho do índice, etc.) ou outro atributo que seja significativo em seu env. Se você vir a estatística em movimento, você sabe que o logstash está obtendo mensagens com êxito no ES

3) Logstash em si: Basta acertar a porta que está escutando. Se a porta ficar escura ... logstash morreu / isnt 'em execução.

    
por 25.07.2017 / 20:11