Desenvolvimento

27 mar, 2018

Ativar o slow log no Elasticsearch

Publicidade

Elasticsearch é muito legal. Você pode simplesmente disparar comandos HTTP para ele mudar (a maioria) de suas configurações em tempo real, sem reiniciar o serviço. Veja como você pode ativar o slow log para fazer consultas que excedam um determinado limite de tempo.

Estes são ativados por índice que você tem, então você pode ser seletivo quanto a isso.

Obtenha todos os índices na sua Elasticsearch

Para começar, obtenha uma lista de todos os seus índices do Elasticsearch. Estou usando o jq aqui para o formato JSON (obtenha o jq aqui).

$ curl -s -XGET 'http://127.0.0.1:9200/_cat/indices'
green open index1 BV8NLebPuHr6wh2qUnp7XpTLBT 2 0 425739 251734  1.3gb  1.3gb
green open index2 3hfdy8Ldw7imoq1KDGg2FMyHAe 2 0 425374 185515  1.2gb  1.2gb
green open index3 ldKod8LPUOphh7BKCWevYp3xTd 2 0 425674 274984  1.5gb  1.5gb

Isso mostra que você tem três índices, chamados index1, index2 e index3.

Ative o slow log por índice

Faça uma chamada HTTP PUT para alterar as configurações de um índice específico. Nesse caso, o índice index3 será alterado.

$ curl -XPUT -d '{"index.search.slowlog.threshold.query.warn" : "50ms","index.search.slowlog.threshold.fetch.warn": "50ms","index.indexing.slowlog.threshold.index.warn": "50ms"}' http://127.0.0.1:9200/index3/_settings | jq

Se você imprimir bem a carga do JSON, ficará assim:

{
  "index.search.slowlog.threshold.query.warn" : "50ms",
  "index.search.slowlog.threshold.fetch.warn": "50ms",
  "index.indexing.slowlog.threshold.index.warn": "50ms"
}

O que significa, essencialmente: logar todas as consultas, buscas e recriações de índice que excedam 50ms com uma severidade de “avisos”.

Ative o log de aviso global

Para garantir que esses logs de aviso sejam gravados em seus logs, certifique-se de ativar esse registro em seu cluster.

$ curl -XPUT -d '{"transient" : {"logger.index.search.slowlog" : "WARN", "logger.index.indexing.slowlog" : "WARN" }}' http://127.0.0.1:9200/_cluster/settings | jq

Mais uma vez, uma carga bem impressa:

{
  "transient" : {
    "logger.index.search.slowlog" : "WARN",
    "logger.index.indexing.slowlog" : "WARN"
  }
}

Essas configurações não são mantidas na reinicialização, elas são gravadas apenas na memória e ativas para a instância do elasticsearch em execução no momento.

***

Mattinas Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/enable-slow-log-elastic-search/