MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Decodificando os logs de erro do MongoDB


Às vezes, decodificar os logs de erros do MongoDB pode ser complicado e consumir grandes partes do seu valioso tempo. Neste artigo, aprenderemos como examinar os logs de erros do MongoDB dissecando cada parte das mensagens de log.

Formato comum para linhas de log do MongoDB


Aqui está o padrão de linha de log para a versão 3.0 e superior...
<timestamp> <severity> <component> [<context>] <message>

Padrão de linha de log para versões anteriores do MongoDB incluído apenas:
<timestamp> [<context>] <message>

Vejamos cada etiqueta.

Carimbos de data e hora


O campo Timestamp da mensagem de log armazena a hora exata em que uma mensagem de log foi inserida no arquivo de log. Existem 4 tipos de timestamps suportados pelo MongoDB. O formato padrão é:iso8601-local. Você pode alterá-lo usando o parâmetro --timeStampFormat.
Nome do formato do carimbo de data/hora Exemplo
iso8601-local 1969-12-31T19:00:00.000+0500
iso8601-utc 1970-01-01T00:00:00.000Z
ctime Qua, 31 de dezembro 19:00:00.000
ctime-no-ms Quarta, 31 de dezembro 19:00:00

Gravidade


A tabela a seguir descreve o significado de todos os níveis de gravidade possíveis.
Nível de gravidade Descrição
F Fatal- O erro do banco de dados fez com que o banco de dados não estivesse mais acessível
E Erro - Erros de banco de dados que interromperão a execução do banco de dados.
W Aviso - Mensagens do banco de dados que explicam o comportamento potencialmente prejudicial do banco de dados.
Eu Informativo - Mensagens apenas para fins informativos, como "Uma nova conexão aceita".
D Depurar - Útil principalmente para depurar os erros do banco de dados

Componente


Após a versão 3.0, as mensagens de log agora incluem “componente” para fornecer uma categorização funcional das mensagens. Isso permite que você reduza facilmente sua pesquisa observando os componentes específicos.
Componente Descrição do erro
Acesso Relacionado ao controle de acesso
Comando Relacionado a comandos de banco de dados
Controle Relacionado a atividades de controle
FTDC Relacionado às atividades de coleta de dados de diagnóstico
Geográfico Relacionado à análise de formas geoespaciais
Índice Relacionado a operações de indexação
Rede Relacionado a atividades de rede
Consulta Relacionado a consultas
REPL. Relacionado a conjuntos de réplicas
REPL_HB Relacionado a pulsações de conjuntos de réplicas
Reversão Relacionado a operações de banco de dados de reversão
Fragmentação Relacionado à fragmentação
Armazenamento Relacionado a atividades de armazenamento
Diário Relacionado às atividades do diário
Escrever Relacionado a operações de gravação de banco de dados

Contexto


A parte de contexto da mensagem de erro geralmente contém o thread ou o ID de conexão. Outros valores podem ser initandlisten. Esta parte é cercada por colchetes. As mensagens de log de qualquer nova conexão com o MongoDB terão valor de contexto como initandlisten, para todas as outras mensagens de log, será o ID do thread ou o ID da conexão. Por exemplo
2018-05-29T19:06:29.731+0000 [initandlisten] connection accepted from 127.0.0.1:27017 #1000 (13 connections now open)
2018-05-29T19:06:35.770+0000 [conn1000] end connection 127.0.0.1:27017 (12 connections now open)

Mensagem


Contém a mensagem de log real.

Local do arquivo de log


A localização padrão no servidor é:/var/log/mongodb/mongodb.log

Se o arquivo de log não estiver presente neste local, você poderá verificar o arquivo de configuração do MongoDB. Você pode encontrar o arquivo de configuração do MongoDB em qualquer um desses dois locais.
/etc/mongod.conf or /yourMongoDBpath/mongod.conf

Depois de abrir o arquivo de configuração, procure a opção logpath nele. A opção logpath informa ao MongoDB onde registrar todas as mensagens.

Analisando uma mensagem de log simples


Aqui está um exemplo de uma mensagem de erro típica do MongoDB...
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017

Timestamp:2014-11-03T18:28:32.450-0500
Gravidade:I
Componente:REDE
Contexto:[initandlisten]
Mensagem:aguardando conexões na porta 27017

A parte mais importante desse erro é a parte da mensagem. Na maioria dos casos, você pode descobrir o erro observando este campo. Às vezes, se a mensagem não estiver clara para você, você poderá optar pela parte componente. Para esta mensagem, o valor do Componente é Rede, o que significa que a mensagem de log está relacionada a um problema de rede.

Se você não conseguir resolver seu erro, verifique a gravidade da mensagem de log que diz que esta mensagem é para fins informativos. Além disso, você também pode verificar outras partes da mensagem de log, como carimbo de data/hora ou contexto, para encontrar a causa raiz completa.

Decodificando mensagens de log de erros comuns


  1. Mensagem:
    2018-05-10T21:19:46.942 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.

    Resolução: Criar usuário administrador no banco de dados de autenticação

  2. Mensagem:
    2018-05-10T21:19:46.942 E COMMAND  [initandlisten] ** ERROR: getMore command failed. Cursor not found

    Resolução: Remova o tempo limite do cursor ou aumente o tamanho do lote do cursor.

  3. Mensagem:
    2018-05-10T21:19:46.942 E INDEX  [initandlisten] ** ERROR:E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null }

    Resolução: Violação de restrição de chave exclusiva. Tente inserir documento com chave diferente.

  4. Mensagem:
    2018-05-10T21:19:46.942 E NETWORK  [initandlisten] ** ERROR:Timed out connecting to localhost:27017.

    Resolução: A latência entre o driver e o servidor é muito grande, o driver pode desistir. Você pode alterar a configuração adicionando a opção connectionTimeout na cadeia de conexão.

  5. Mensagem:
    2018-05-10T21:19:46.942 E WRITE  [initandlisten] ** ERROR: A write operation resulted in an error. E11000 duplicate key error index: test.people.$_id_ dup key: { : 0 }

    Resolução: Remova a duplicação do valor do campo _id de documentos conflitantes.

  6. Mensagem:
    2018-05-10T21:19:46.942 E NETWORK  [initandlisten] ** ERROR: No connection could be made because the target machine actively refused it 127.0.0.1:27017 at System.Net.Sockets.Socket.EndConnect

    Resolução: O servidor não está sendo executado na porta 27017 ou tente reiniciar o servidor com o host e a porta corretos.

Ferramentas de gerenciamento de log


O MongoDB 3.0 atualizou seus recursos de log para fornecer melhores insights para todas as atividades do banco de dados. Existem muitas ferramentas de gerenciamento de log disponíveis no mercado, como MongoDB Ops Manager, entradas de log, mtools etc.

Conclusão


O registro em log é tão importante quanto a replicação ou fragmentação para um bom e adequado gerenciamento de banco de dados. Para um melhor gerenciamento de banco de dados, deve-se decodificar os logs facilmente para corrigir as exceções/erros rapidamente. Espero que depois de ler este tutorial, você se sinta mais confortável ao analisar logs complexos do MongoDB.