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/