Configurar logs do Elasticsearch - Amazon Elasticsearch Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar logs do Elasticsearch

O Amazon ES Elasticsearch expõe quatro logs do Amazon CloudWatch Logs por meio dos logs de erros do :, pesquisa logs lentos de pesquisa, indexa logs lentos e logs de auditoria. Pesquisar logs lentos, indexar logs lentos e logs de erros é útil para solucionar problemas de desempenho e estabilidade. Os logs de auditoria rastreiam a atividade do usuário para fins de conformidade. Todos os logs são desabilitados por padrão. Se habilitados, a definição de preço padrão do CloudWatch é aplicada.

nota

Os logs de erros estão disponíveis apenas para as versões 5.1 e superior do Elasticsearch. Os logs lentos estão disponíveis para todas as versões do Elasticsearch.

Para os logs, o Elasticsearch usa o Apache Log4j 2 e seus níveis de log internos (de menos severo para mais severo) de TRACE, DEBUG, INFO, WARN, ERROR e FATAL.

Se você habilitar os logs de erros, o Amazon ES publicará as linhas de log de WARN, ERROR e FATAL para CloudWatch. O Amazon ES também publica várias exceções do nível DEBUG, incluindo:

  • org.elasticsearch.index.mapper.MapperParsingException

  • org.elasticsearch.index.query.QueryShardException

  • org.elasticsearch.action.search.SearchPhaseExecutionException

  • org.elasticsearch.common.util.concurrent.EsRejectedExecutionException

  • java.lang.IllegalArgumentException

Os logs de erros podem ajudar a solucionar problemas em muitas situações, incluindo:

  • Problemas de compilação de script Painless

  • Consultas inválidas

  • Indexação de problemas

  • Falhas de snapshots

Habilitação da publicação de logs (console)

O console do Amazon ES é a maneira mais simples de habilitar a publicação de logs no CloudWatch.

Para habilitar a publicação de logs no CloudWatch (console)

  1. Acesse https://aws.amazon.com e escolha Sign In to the Console.

  2. Em Análise, escolha Elasticsearch Service.

  3. No painel de navegação, em My domains, escolha o domínio que você deseja atualizar.

  4. Na guia Logs, escolha Habilitar para o log que você quer.

  5. Crie um grupo de logs do CloudWatch ou escolha um existente.

    nota

    Se você planejar habilitar vários logs, recomendamos publicar cada um em seu próprio grupo de logs. Essa separação torna os logs mais fáceis de serem encontrados.

  6. Escolha uma política de acesso que contenha as permissões apropriadas ou crie uma política usando o JSON fornecido pelo console:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ] }
    Importante

    O CloudWatch Logs oferece suporte a 10 políticas baseadas em recurso por região. Se você planejar ativar logs para vários domínios do Amazon ES, crie e reutilize uma política mais abrangente que inclui vários grupos de logs para evitar atingir esse limite. Para obter as etapas sobre como atualizar a política, consulte Habilitação da publicação de logs (AWS CLI).

  7. Escolha Enable (Habilitar).

    O status de seu domínio muda de Active para Processing. O status deve retornar para Ativo antes que a publicação de logs seja habilitada. Essa alteração geralmente leva 30 minutos, mas pode demorar mais, dependendo da configuração do domínio.

Se você tiver habilitado um dos logs lentos, consulte Configuração dos limites de logs do Elasticsearch para logs lentos. Se você ativou logs de auditoria, consulte Interface do usuário do Kibana do log de auditoria. Se tiver habilitado apenas logs de erros, você não precisará executar nenhuma etapa de configuração adicional.

Habilitação da publicação de logs (AWS CLI)

Antes de habilitar a publicação de logs, você precisa de um grupo de logs do CloudWatch. Se você ainda não tem, pode criar um usando o seguinte comando:

aws logs create-log-group --log-group-name my-log-group

Digite o comando seguinte para localizar o ARN do grupo de log e anote-o:

aws logs describe-log-groups --log-group-name my-log-group

Agora você pode dar permissões ao Amazon ES para gravar o grupo de log. Você deve fornecer o ARN do grupo de log quase no final do comando:

aws logs put-resource-policy --policy-name my-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents","logs:PutLogEventsBatch","logs:CreateLogStream"],"Resource": "cw_log_group_arn"}]}'
Importante

O CloudWatch Logs oferece suporte a 10 políticas baseadas em recurso por região. Se você pretende ativar logs lentos para vários domínios do Amazon ES, crie e reutilize uma política mais abrangente que inclui vários grupos de log para evitar alcançar esse limite.

Se você precisar revisar essa política posteriormente, use o comando aws logs describe-resource-policies. Para atualizar a política, emita o mesmo comando aws logs put-resource-policy com um novo documento de política.

Por fim, você pode usar a --log-publishing-options opção de habilitar a publicação. A sintaxe para essa opção é a mesma para os comandos create-elasticsearch-domain e update-elasticsearch-domain-config.

Parâmetro Valores válidos
--log-publishing-options SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
AUDIT_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
nota

Se você planejar habilitar vários logs, recomendamos publicar cada um em seu próprio grupo de logs. Essa separação torna os logs mais fáceis de serem encontrados.

Exemplo

O exemplo a seguir habilita a publicação de busca e índice de logs lentos no domínio especificado:

aws es update-elasticsearch-domain-config --domain-name my-domain --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"

Para desabilitar a publicação para o CloudWatch, execute o mesmo comando com Enabled=false.

Se você tiver habilitado um dos logs lentos, consulte Configuração dos limites de logs do Elasticsearch para logs lentos. Se você ativou logs de auditoria, consulte Interface do usuário do Kibana do log de auditoria. Se tiver habilitado apenas logs de erros, você não precisará executar nenhuma etapa de configuração adicional.

Habilitação da publicação de logs (SDKs da AWS)

Para poder habilitar a publicação de logs, você deve primeiro criar um grupo de logs do CloudWatch, obter seu ARN e fornecer ao Amazon ES permissões para gravar nele. As operações relevantes são documentadas no Amazon CloudWatch Logs API Reference:

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

Você pode acessar essas operações usando o AWS SDKs.

O AWS SDKs (exceto as SDKs Android e iOS) é compatível com todas as operações definidas em Amazon Elasticsearch ServiceReferência sobre a API de configuração do , incluindo a opção --log-publishing-options para CreateElasticsearchDomain e UpdateElasticsearchDomainConfig.

Se você tiver habilitado um dos logs lentos, consulte Configuração dos limites de logs do Elasticsearch para logs lentos. Se tiver habilitado apenas logs de erros, você não precisará executar nenhuma etapa de configuração adicional.

Configuração dos limites de logs do Elasticsearch para logs lentos

O Elasticsearch desabilita os logs lentos por padrão. Depois de habilitar a publicação de logs lentos para o CloudWatch, você ainda deve especificar os limites de log para cada índice do Elasticsearch. Esses limites definem exatamente o que deve ser registrado e em que nível de log.

Você especifica essas configurações por meio da API REST do Elasticsearch:

PUT elasticsearch_domain_endpoint/index/_settings { "index.search.slowlog.threshold.query.warn": "5s", "index.search.slowlog.threshold.query.info": "2s" }

Para testar se os logs lentos estão sendo publicados com êxito, comece com valores bem baixos para verificar se os logs aparecem no CloudWatch e, em seguida, aumente os limites para níveis mais úteis.

Se os logs não aparecerem, verifique o seguinte:

  • O grupo de log do CloudWatch existe? Verifique o console do CloudWatch.

  • O Amazon ES tem permissões para gravar o grupo de log? Verifique o console do Amazon ES.

  • O domínio do Amazon ES está configurado para publicar para o grupo de log? Verifique o console do Amazon ES, use a opção AWS CLI describe-elasticsearch-domain-config ou chame DescribeElasticsearchDomainConfig usando uma das SDKs.

  • Os limites de log do Elasticsearch são baixos a ponto de suas solicitações excedê-los? Para revisar seus limites para um índice, use o seguinte comando:

    GET elasticsearch_domain_endpoint/index/_settings?pretty

Se você quer desabilitar logs lentos para um índice, redefina todos os limites que você mudou para os valores padrão de -1.

Desabilitar a publicação para o CloudWatch usando o console do Amazon ES ou a AWS CLI não impede que o Elasticsearch gere logs, apenas interrompe a publicação desses logs. Verifique as configurações de índice se você não precisar mais de logs lentos.

Visualizar logs

A visualização dos logs lentos e do aplicativo no CloudWatch é igual a qualquer outra visualização de log do CloudWatch. Para obter mais informações, consulte Visualizar dados de log no Amazon CloudWatch Logs User Guide.

Algumas considerações sobre a visualização de logs:

  • O Amazon ES publica apenas os primeiros 255.000 caracteres de cada linha no CloudWatch. O conteúdo restante ficará truncado. Para logs de auditoria, são 10.000 caracteres por mensagem.

  • Em CloudWatch, os nomes dos streamings de log têm sufixos de -index-slow-logs, -search-slow-logs, -es-application-logs e -audit-logs para ajudar a identificar seu conteúdo.