Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Mensagens de registro

Nesta página

  • Visão geral
  • Registro estruturado
  • Tipos de campos de mensagem de registro
  • Níveis de verbosidade
  • Supressão de registros
  • Analisar mensagens de registro estruturadas
  • Exemplos de mensagens de registro
  • Limitações do syslog do Linux
  • Baixe seus registros

Como parte da operação normal, o MongoDB mantém um registro de eventos em execução, incluindo entradas como conexões de entrada, comandos executados e problemas encontrados. Geralmente, as mensagens de registro são úteis para diagnosticar problemas, monitorar o sistema e ajustar o desempenho.

Para receber suas mensagens de registro, você pode usar qualquer um dos seguintes métodos:

As instâncias mongod / mongos geram todas as mensagens de registro no formato JSON estruturado. As entradas de registro são escritas como uma série de pares de chave-valor, onde cada chave indica um tipo de campo de mensagem de registro, como "gravidade", e cada valor correspondente registra as informações de registro associadas para esse tipo de campo, como "informacional". Anteriormente, as entradas de registro eram geradas como texto simples.

Exemplo

Veja a seguir um exemplo de mensagem de registro no formato JSON, conforme apareceria no arquivo de log do MongoDB:

{"t":{"$date":"2020-05-01T15:16:17.180+00:00"},"s":"I", "c":"NETWORK", "id":12345, "ctx":"listener", "svc": "R", "msg":"Listening on", "attr":{"address":"127.0.0.1"}}

As entradas de registro JSON podem ser impressas para facilitar a leitura. Esta é a mesma entrada de registro impressa:

{
"t": {
"$date": "2020-05-01T15:16:17.180+00:00"
},
"s": "I",
"c": "NETWORK",
"id": 12345,
"ctx": "listener",
"svc": "R",
"msg": "Listening on",
"attr": {
"address": "127.0.0.1"
}
}

Nessa entrada de registro, por exemplo, a chave s, que representa a gravidade, tem um valor correspondente de I, que representa "Informational", e a chave c, que representa o componente, tem um valor correspondente de NETWORK, indicando que o componente de "rede" foi responsável por esta mensagem específica. Os vários tipos de campo são apresentados em detalhes na seção Tipos de campoa de mensagem de registro .

O registro estruturado com pares chave-valor permite a análise eficiente por ferramentas automatizadas ou serviços de ingestão de registro e facilita a pesquisa programática e a análise de mensagens de registro. Exemplos de análise de mensagens de registro estruturadas podem ser encontrados na seção Analisando mensagens de registro estruturadas .

Observação

O mongod será encerrado se não for possível gravar no arquivo de registro. Para garantir que mongod possa gravar no arquivo de log, verifique se o volume de registro tem espaço no disco e se os registros são rotacionados.

Toda a saída de registro está no formato JSON, incluindo a saída enviada para:

A saída do comando getLog também está no formato JSON.

Cada entrada de registro é gerada como um objeto JSON independente que segue a especificação Relaxed Extended JSON v2.0 e tem o seguinte layout e ordem de campo:

{
"t": <Datetime>, // timestamp
"s": <String>, // severity
"c": <String>, // component
"id": <Integer>, // unique identifier
"ctx": <String>, // context
"svc": <String>, // service
"msg": <String>, // message body
"attr": <Object>, // additional attributes (optional)
"tags": <Array of strings>, // tags (optional)
"truncated": <Object>, // truncation info (if truncated)
"size": <Object> // original size of entry (if truncated)
}

Descrições do Campo:

Nome do campo
Tipo
Descrição
t
Data hora
Carimbo de data/hora da mensagem de registro no formato ISO-8601 . Para ver um exemplo, consulte Carimbo de data/hora.
s
String
Código de gravidade curto da mensagem de registro. Para ver um exemplo, consulte Gravidade.
c
String
String completa do componente para a mensagem de registro. Para um exemplo, consulte Componentes.
id
Inteiro
Identificador exclusivo para a declaração de registro. Para obter um exemplo, consulte Filtragem por ID de registro conhecido.
ctx
String
Nome do tópico que causou a declaração de registro.
svc
String
Nome do serviço em cujo contexto a declaração de registro foi feita. será S para "shard", R "router" ou - para "unknown" ou "none".
msg
String
Mensagem de saída de log passada do servidor ou do driver. Se necessário, a mensagem é evitada de acordo com a especificação JSON.
attr
Objeto
Um ou mais pares de valores-chave para atributos de registro adicionais. Se a
mensagem de registro não inclui atributos adicionais, a
attr o objeto é omitido.
Os valores de atributo podem ser referenciados pelo nome da chave no
msg corpo da mensagem, dependendo da mensagem. Se necessário, o
atributos são escapados
de acordo com a especificação JSON.
tags
Array de strings
Strings que representam quaisquer tags aplicáveis à declaração de registro. Por exemplo, ["startupWarnings"].
truncated
Objeto
Informações sobre a truncamento da mensagem de registro, se aplicável. Somente incluído se a entrada do registro contiver pelo menos um atributo attr truncado.
size
Objeto
Tamanho original de uma entrada de registro se tiver sido truncada. Somente incluído se a entrada do registro contiver pelo menos um atributo attr truncado.

Os campos mensagem e atributos escaparão dos caracteres de controle conforme necessário de acordo com a especificação JSON Estendido Relaxado v2.0:

Caractere representado
Sequência de fuga
Aspas (")
\"
Barra invertida (\)
\\
Backspace (0x08)
\b
Formfeed (0x0C)
\f
Newline (0x0A)
\n
Quebra de linha (0x0D)
\r
Aba horizontal (0x09)
\t

Os caracteres de controle não mencionados são representados como \uXXXX, sendo "XXXX" o ponto de código Unicode em formato hexadecimal. Bytes com codificação UTF-8 inválida são substituídos pelo caractere de substituição unicode representado por \ufffd.

Um exemplo de escape de mensagens é fornecido na seção de exemplos .

Alterado na versão 7.3.

Quaisquer atributos que excedam o tamanho máximo definido com maxLogSizeKB (padrão: 10 KB) são truncados. Os atributos truncados omitem os dados de registro além do limite configurado, mas mantêm a formatação JSON da entrada para garantir que a entrada permaneça analisável.

Por exemplo, o seguinte objeto JSON representa um atributo command que contém 5000 elementos no campo $in sem truncamento.

Observação

As entradas de registro de exemplo são reformatadas para legibilidade.

{
"command": {
"find": "mycoll",
"filter": {
"value1": {
"$in": [0, 1, 2, 3, ... 4999]
},
"value2": "foo"
},
"sort": { "value1": 1 },
"lsid":{"id":{"$uuid":"80a99e49-a850-467b-a26d-aeb2d8b9f42b"}},
"$db": "testdb"
}
}

Neste exemplo, a array $in é truncada no elemento 376porque o tamanho do atributo command excederia maxLogSizeKB se incluísse os elementos subsequentes. O restante do atributo command é omitido. A entrada de registro truncada se assemelha à seguinte saída:

{
"t": { "$date": "2021-03-17T20:30:07.212+01:00" },
"s": "I",
"c": "COMMAND",
"id": 51803,
"ctx": "conn9",
"msg": "Slow query",
"attr": {
"command": {
"find": "mycoll",
"filter": {
"value1": {
"$in": [ 0, 1, ..., 376 ] // Values in array omitted for brevity
}
}
},
... // Other attr fields omitted for brevity
},
"truncated": {
"command": {
"truncated": {
"filter": {
"truncated": {
"value1": {
"truncated": {
"$in": {
"truncated": {
"377": {
"type": "double",
"size": 8
}
},
"omitted": 4623
}
}
}
},
"omitted": 1
}
},
"omitted": 3
}
},
"size": {
"command": 21692
}
}

As entradas de registro que contêm um ou mais atributos truncados incluem objetos truncated aninhados, que fornecem as seguintes informações para cada atributo truncado na entrada de registro:

  • O atributo que foi truncado

  • O subobjeto específico do atributo que acionou a truncamento, se aplicável

  • O type de dados do campo truncado

  • O size, em bytes, do elemento que aciona o truncamento

  • O número de elementos que estavam omitted em cada subobjeto devido ao truncamento

As entradas de registro com atributos truncados também podem incluir um campo size adicional no final da entrada, que indica o tamanho original do atributo antes do truncamento, neste caso 21692 ou cerca 22KB. Esse campo size final só é mostrado se for diferente do campo size no objeto truncated , ou seja, se o tamanho total do objeto do atributo for diferente do tamanho do subobjeto truncado, como é o caso no exemplo acima.

No arquivo de saída ou nos registros do syslog, espaços são inseridos após os campos de severity, context e id para aumentar a legibilidade com fontes de largura fixa.

O seguinte trecho do arquivo de log do MongoDB demonstra este preenchimento:

{"t":{"$date":"2020-05-18T20:18:12.724+00:00"},"s":"I", "c":"CONTROL", "id":23285, "ctx":"main", "svc": "R", "msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
{"t":{"$date":"2020-05-18T20:18:12.734+00:00"},"s":"W", "c":"ASIO", "id":22601, "ctx":"main", "svc": "R", "msg":"No TransportLayer configured during NetworkInterface startup"}
{"t":{"$date":"2020-05-18T20:18:12.734+00:00"},"s":"I", "c":"NETWORK", "id":4648601, "ctx":"main", "svc": "R", "msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, set tcpFastOpenServer, tcpFastOpenClient, and tcpFastOpenQueueSize."}
{"t":{"$date":"2020-05-18T20:18:12.814+00:00"},"s":"I", "c":"STORAGE", "id":4615611, "ctx":"initandlisten", "svc": "R", "msg":"MongoDB starting", "attr":{"pid":10111,"port":27001,"dbPath":"/var/lib/mongo","architecture":"64-bit","host":"centos8"}}
{"t":{"$date":"2020-05-18T20:18:12.814+00:00"},"s":"I", "c":"CONTROL", "id":23403, "ctx":"initandlisten", "svc": "R", "msg":"Build Info", "attr":{"buildInfo":{"version":"4.4.0","gitVersion":"328c35e4b883540675fb4b626c53a08f74e43cf0","openSSLVersion":"OpenSSL 1.1.1c FIPS 28 May 2019","modules":[],"allocator":"tcmalloc","environment":{"distmod":"rhel80","distarch":"x86_64","target_arch":"x86_64"}}}}
{"t":{"$date":"2020-05-18T20:18:12.814+00:00"},"s":"I", "c":"CONTROL", "id":51765, "ctx":"initandlisten", "svc": "R", "msg":"Operating System", "attr":{"os":{"name":"CentOS Linux release 8.0.1905 (Core) ","version":"Kernel 4.18.0-80.11.2.el8_0.x86_64"}}}

Ao trabalhar com o log estruturado do MongoDB, o utilitário de linha de comando jqde terceiros é uma ferramenta útil que permite a impressão fácil e bonita de entradas de registro e a poderosa correspondência e filtragem baseadas em chaves.

jq é um analisador JSON de código aberto, e está disponível para Linux, Windows e macOS.

Você pode usar jq para formatar em pretty-print as entradas de registro da seguinte maneira:

  • Formatar o arquivo de registro inteiro em pretty-print:

    cat mongod.log | jq
  • Formatar a entrada de registro mais recente em pretty-print:

    cat mongod.log | tail -1 | jq

Mais exemplos de como trabalhar com registros estruturados do MongoDB estão disponíveis na seção Analisar mensagens de registro estruturadas .

As mensagens de registro do MongoDB podem ser enviadas para arquivo, syslog ou stdout (saída padrão).

Para configurar o destino de saída do registro, use uma das seguintes configurações, no arquivo de configuração ou na linha de comando:

Arquivo de Configuração:
Linha de comando:

Não especificar arquivo ou syslog envia todos os resultados de registro para stdout.

Para obter a lista completa de configurações e opções de registro, consulte:

Arquivo de Configuração:
Linha de comando:

Observação

As mensagens de erro enviadas para stderr (erro padrão), como erros fatais durante a inicialização quando não estiver usando o arquivo ou os destinos de registro do syslog, ou mensagens relacionadas a definições de registro mal configuradas, não são afetadas pela definição do destino de saída de registro e são impressas em stderr em formato de texto simples.

O tipo de campo de carimbo de data/hora indica a data e hora precisas em que o evento registrado ocorreu.

{
"t": {
"$date": "2020-05-01T15:16:17.180+00:00"
},
"s": "I",
"c": "NETWORK",
"id": 12345,
"ctx": "listener",
"svc": "R",
"msg": "Listening on",
"attr": {
"address": "127.0.0.1"
}
}

Ao fazer login no arquivo ou no syslog [1], o formato padrão para o carimbo de data/hora é iso8601-local. Para modificar o formato do carimbo de data/hora, use a opção de tempo de execução --timeStampFormat ou a configuração systemLog.timeStampFormat .

Consulte Filtragem por faixa de datas para ver exemplos de análise de registros que filtram o campo de carimbo de data/hora.

Observação

O formato de carimbo de data/hora do ctime não é mais suportado.

[1] Ao fazer login no syslog, o daemon syslog gera carimbos de data/hora quando registra uma mensagem, não quando o MongoDB emite a mensagem. Isso pode levar a registros de data/hora enganosos para entradas de registro, especialmente quando o sistema está sob volume pesado.

O tipo de campo de gravidade indica o nível de gravidade associado ao evento registrado.

{
"t": {
"$date": "2020-05-01T15:16:17.180+00:00"
},
"s": "I",
"c": "NETWORK",
"id": 12345,
"ctx": "listener",
"svc": "R",
"msg": "Listening on",
"attr": {
"address": "127.0.0.1"
}
}

Os níveis de gravidade variam de "Fatal" (mais grave) a "Depuração" (menos grave):

Nível
Descrição
F
Fatal
E
Erro
W
Aviso
I
Informativo, para nível de detalhamento 0
D1 - D5

Depuração, para níveis de detalhamento > 0

O MongoDB indica o nível de verbosidade de depuração específico . Por exemplo, se o nível de verbosidade for 2, o MongoDB indica D2.

Em versões anteriores, as mensagens de registro do MongoDB especificaram D para todos os níveis de verbosidade de depuração.

Você pode especificar o nível de verbosidade de vários componentes para determinar a quantidade de mensagens informativas e de depuração emitidas pelo MongoDB. As categorias de gravidade acima desses níveis são sempre exibidas. [2] Para definir níveis de detalhamento, consulte Configurar níveis de verbosidade de registro.

O tipo de campo do componente indica a categoria da qual um evento registrado é membro, como NETWORK ou COMMAND.

{
"t": {
"$date": "2020-05-01T15:16:17.180+00:00"
},
"s": "I",
"c": "NETWORK",
"id": 12345,
"ctx": "listener",
"svc": "R",
"msg": "Listening on",
"attr": {
"address": "127.0.0.1"
}
}

Cada componente pode ser configurado individualmente por meio de seu próprio filtro de verbosidade. Os componentes disponíveis são os seguintes:

ACCESS

Mensagens relacionadas ao controle de acesso, como autenticação. Para especificar o nível de registro dos componentes ACCESS , use a configuração systemLog.component.accessControl.verbosity .

COMMAND

Mensagens relacionadas aos comandos do banco de dados, como count. Para especificar o nível de registro dos componentes COMMAND , use a configuração systemLog.component.command.verbosity .

CONTROL

Mensagens relacionadas a atividades de controle, como inicialização. Para especificar o nível de registro dos componentes CONTROL , use a configuração systemLog.component.control.verbosity .

ELECTION

Mensagens relacionadas especificamente às eleições do conjunto de réplicas. Para especificar o nível de registro para ELECTION componentes, defina o parâmetro systemLog.component.replication.election.verbosity .

REPL é o componente pai de ELECTION. Se o systemLog.component.replication.election.verbosity não estiver configurado, o MongoDB utilizará o nível de verbosidade do REPL para componentes do ELECTION .

FTDC

Mensagens relacionadas ao mecanismo de coleta de dados para diagnóstico, incluindo estatísticas do servidor e atualizações de status. Para especificar o nível de registro dos componentes FTDC , use a configuração systemLog.component.ftdc.verbosity .

GEO

Mensagens relacionadas à análise de formas geoespaciais, como verificar as formas GeoJSON. Para especificar o nível de registro para GEO componentes, defina o parâmetro systemLog.component.geo.verbosity .

INDEX

Mensagens relacionadas a operações de indexação, como criar índices. Para especificar o nível de registro para INDEX componentes, defina o parâmetro systemLog.component.index.verbosity .

INITSYNC

Mensagens relacionadas à operação de sincronização inicial. Para especificar o nível de registro para INITSYNC componentes, defina o parâmetro systemLog.component.replication.initialSync.verbosity .

REPL é o componente pai de INITSYNC. Se o systemLog.component.replication.initialSync.verbosity não estiver configurado, o MongoDB utilizará o nível de verbosidade do REPL para componentes do INITSYNC .

JOURNAL

Mensagens relacionadas especificamente às atividades de diário no armazenamento. Para especificar o nível de registro dos componentes JOURNAL , use a configuração systemLog.component.storage.journal.verbosity .

STORAGE é o componente pai de JOURNAL. Se o systemLog.component.storage.journal.verbosity não estiver configurado, o MongoDB utilizará o nível de verbosidade do STORAGE para componentes do JOURNAL .

NETWORK

Mensagens relacionadas às atividades da rede, como aceitar conexões. Para especificar o nível de registro para NETWORK componentes, defina o parâmetro systemLog.component.network.verbosity .

QUERY

Mensagens relacionadas a queries, incluindo atividades do planejador de query. Para especificar o nível de registro para QUERY componentes, defina o parâmetro systemLog.component.query.verbosity .

RECOVERY

Mensagens relacionadas às atividades de recuperação de armazenamento. Para especificar o nível de registro dos componentes RECOVERY , use a configuração systemLog.component.storage.recovery.verbosity .

STORAGE é o componente pai de RECOVERY. Se o systemLog.component.storage.recovery.verbosity não estiver configurado, o MongoDB utilizará o nível de verbosidade do STORAGE para componentes do RECOVERY .

REPL

Mensagens relacionadas a conjuntos de réplicas, como initial sync, pulsações, replicação de estado estável e rollback. [2] Para especificar o nível de registro para REPL componentes, defina o parâmetro systemLog.component.replication.verbosity .

REPL é o componente pai dos componentes ELECTION, INITSYNC, REPL_HB e ROLLBACK .

REPL_HB

Mensagens relacionadas especificamente ao conjunto de réplicas de pulsações. Para especificar o nível de registro para REPL_HB componentes, defina o parâmetro systemLog.component.replication.heartbeats.verbosity .

REPL é o componente pai de REPL_HB. Se o systemLog.component.replication.heartbeats.verbosity não estiver configurado, o MongoDB utilizará o nível de verbosidade do REPL para componentes do REPL_HB .

ROLLBACK

Mensagens relacionadas às operações de rollback . Para especificar o nível de registro para ROLLBACK componentes, defina o parâmetro systemLog.component.replication.rollback.verbosity .

REPL é o componente pai de ROLLBACK. Se o systemLog.component.replication.rollback.verbosity não estiver configurado, o MongoDB utilizará o nível de verbosidade do REPL para componentes do ROLLBACK .

SHARDING

Mensagens relacionadas a atividades de compartilhamento, como a inicialização do mongos. Para especificar o nível de registro dos componentes SHARDING , use a configuração systemLog.component.sharding.verbosity .

STORAGE

Mensagens relacionadas a atividades de armazenamento, como processos envolvidos no comando fsync . Para especificar o nível de registro dos componentes STORAGE , use a configuração systemLog.component.storage.verbosity .

STORAGE é o componente pai de JOURNAL e RECOVERY.

TXN

Novidades na versão 4.0.2.

Mensagens relacionadas a transações multidocumento. Para especificar o nível de registro para TXN componentes, use a configuração systemLog.component.transaction.verbosity .

WRITE

Mensagens relacionadas a operações de gravação, como comandos update . Para especificar o nível de registro dos componentes WRITE , use a configuração systemLog.component.write.verbosity .

WT

Novidades na versão 5.3.

Mensagens relacionadas ao mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WT componentes, use a configuração systemLog.component.storage.wt.verbosity .

WTBACKUP

Novidades na versão 5.3.

Mensagens relacionadas às operações de backup executadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro dos componentes WTBACKUP , use a configuração systemLog.component.storage.wt.wtBackup.verbosity .

WTCHKPT

Novidades na versão 5.3.

Mensagens relacionadas às operações de checkpoint realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTCHKPT componentes, use a configuração systemLog.component.storage.wt.wtCheckpoint.verbosity .

WTCMPCT

Novidades na versão 5.3.

Mensagens relacionadas às operações de compactação realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTCMPCT componentes, use a configuração systemLog.component.storage.wt.wtCompact.verbosity .

WTEVICT

Novidades na versão 5.3.

Mensagens relacionadas a operações de despejo realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTEVICT componentes, use a configuração systemLog.component.storage.wt.wtEviction.verbosity .

WTHS

Novidades na versão 5.3.

Mensagens relacionadas ao histórico de armazenamento do mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTHS componentes, use a configuração systemLog.component.storage.wt.wtHS.verbosity .

WTRECOV

Novidades na versão 5.3.

Mensagens relacionadas às operações de recuperação realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTRECOV componentes, use a configuração systemLog.component.storage.wt.wtRecovery.verbosity .

WTRTS

Novidades na versão 5.3.

Mensagens relacionadas a operações de rollback to stable (RTS) realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTRTS componentes, use a configuração systemLog.component.storage.wt.wtRTS.verbosity .

WTSLVG

Novidades na versão 5.3.

Mensagens relacionadas a operações de recuperação realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTSLVG componentes, use a configuração systemLog.component.storage.wt.wtSalvage.verbosity .

WTTIER

Novidades na versão 5.3.

Mensagens relacionadas a operações de armazenamento em níveis realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTTIER componentes, use a configuração systemLog.component.storage.wt.wtTiered.verbosity .

WTTS

Novidades na versão 5.3.

Mensagens relacionadas a registros de data e hora usados pelo mecanismo de armazenamento do WiredTiger . Para especificar o nível de registro para WTTS componentes, use a configuração systemLog.component.storage.wt.wtTimestamp.verbosity .

WTTXN

Novidades na versão 5.3.

Mensagens relacionadas a transações realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTTXN componentes, use a configuração systemLog.component.storage.wt.wtTransaction.verbosity .

WTVRFY

Novidades na versão 5.3.

Mensagens relacionadas a operações de verificação realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTVRFY componentes, use a configuração systemLog.component.storage.wt.wtVerify.verbosity .

WTWRTLOG

Novidades na versão 5.3.

Mensagens relacionadas a operações de gravação de registro realizadas pelo mecanismo de armazenamento WiredTiger . Para especificar o nível de registro para WTWRTLOG componentes, use a configuração systemLog.component.storage.wt.wtWriteLog.verbosity .

-

Mensagens não associadas a um componente nomeado. Os componentes sem nome têm o nível de log padrão especificado na configuração systemLog.verbosity . A configuração systemLog.verbosity é a configuração padrão para componentes nomeados e não nomeados.

Consulte Filtrando por componente para ver exemplos de análise de registros que filtram no campo de componente.

Os drivers do MongoDB e aplicativos de clientes (incluindo mongosh) podem enviar informações de identificação no momento da conexão com o servidor. Depois que a conexão é estabelecida, o cliente não envia as informações de identificação novamente, a menos que a conexão seja interrompida e restabelecida.

Esta informação de identificação está contida no campo atributos da entrada de registro. A informação exata incluída varia de acordo com o cliente.

Abaixo está uma mensagem de registro de exemplo contendo o documento de dados do cliente como transmitido de uma conexão mongosh . Os dados do cliente estão contidos no objeto doc no campo atributos :

{"t":{"$date":"2020-05-20T16:21:31.561+00:00"},"s":"I", "c":"NETWORK", "id":51800, "ctx":"conn202", "svc": "R", "msg":"client metadata", "attr":{"remote":"127.0.0.1:37106","client":"conn202","doc":{"application":{"name":"MongoDB Shell"},"driver":{"name":"MongoDB Internal Client","version":"4.4.0"},"os":{"type":"Linux","name":"CentOS Linux release 8.0.1905 (Core) ","architecture":"x86_64","version":"Kernel 4.18.0-80.11.2.el8_0.x86_64"}}}}

Quando os membros secundários de um conjunto de réplicas iniciam uma conexão com um primary, eles enviam dados semelhantes. Um exemplo de mensagem de registro contendo essa conexão de iniciação pode aparecer da seguinte forma. Os dados do cliente estão contidos no objeto doc no campo atributos:

{"t":{"$date":"2020-05-20T16:33:40.595+00:00"},"s":"I", "c":"NETWORK", "id":51800, "ctx":"conn214", "svc": "R", "msg":"client metadata", "attr":{"remote":"127.0.0.1:37176","client":"conn214","doc":{"driver":{"name":"NetworkInterfaceTL","version":"4.4.0"},"os":{"type":"Linux","name":"CentOS Linux release 8.0.1905 (Core) ","architecture":"x86_64","version":"Kernel 4.18.0-80.11.2.el8_0.x86_64"}}}}

Consulte a seção de exemplos para ver um exemplo impresso que mostra os dados do cliente.

Para obter uma descrição completa das informações do cliente e dos campos obrigatórios, consulte a especificação do Handshake do MongoDB.

Você pode especificar o nível de detalhamento do registro para aumentar ou diminuir a quantidade de mensagens de registro geradas pelo MongoDB. Os níveis de detalhamento podem ser ajustados para todos os componentes em conjunto ou para componentes nomeados específicos individualmente.

A verbosidade afeta as entradas de registro apenas nas categorias de gravidade Informational e Debug . As categorias de gravidade acima desses níveis são sempre exibidas.

Você pode definir níveis de verbosidade para um valor alto para mostrar o registro detalhado para depuração ou desenvolvimento, ou para um valor baixo para minimizar as gravações no registro em um sistema de produção verificado. [2]

Para visualizar os níveis de verbosidade atuais, utilize o método db.getLogComponents():

db.getLogComponents()

Seu resultado pode se assemelhar ao seguinte:

{
"verbosity" : 0,
"accessControl" : {
"verbosity" : -1
},
"command" : {
"verbosity" : -1
},
...
"storage" : {
"verbosity" : -1,
"recovery" : {
"verbosity" : -1
},
"journal" : {
"verbosity" : -1
}
},
...

A entrada verbosity inicial é o nível de verbosidade pai para todos os componentes, enquanto os componentes individuais nomeados a seguir, como accessControl, indicam o nível de verbosidade específico para esse componente, substituindo o nível de verbosidade global para esse componente específico, se definido.

Um valor de -1, indica que o componente herda o nível de verbosidade de seus pai, se tiver um (como com recovery acima, herdando de storage) ou o nível de verbosidade global se não tiver (como com command). Os relacionamentos de herança para níveis de detalhamento são indicados na seção de componentes.

Você pode configurar o nível de verbosidade utilizando: as configurações do systemLog.verbosity e systemLog.component.<name>.verbosity, o parâmetro logComponentVerbosity ou o método db.setLogLevel(). [2]

Para configurar o nível de registro padrão para todos os componentes, use a configuração systemLog.verbosity . Para configurar o nível de componentes específicos, utilize as configurações do systemLog.component.<name>.verbosity .

Por exemplo, a seguinte configuração define o systemLog.verbosity para 1, o systemLog.component.query.verbosity para 2, o systemLog.component.storage.verbosity para 2 e o systemLog.component.storage.journal.verbosity para 1:

systemLog:
verbosity: 1
component:
query:
verbosity: 2
storage:
verbosity: 2
journal:
verbosity: 1

Você define estes valores no arquivo de configuração ou na linha de comando para sua instância do mongod ou mongos.

Todos os componentes não especificados explicitamente na configuração têm um nível de detalhamento de -1, indicando que eles herdam o nível de seu pai, se tiverem um, ou o nível de detalhamento global (systemLog.verbosity), se não tiverem.

Para definir o parâmetrologComponentVerbosity, passe um documento com as configurações de detalhamento a serem alteradas.

Por exemplo, o seguinte define o default verbosity level como 1, o query como 2, o storage para 2e o storage.journal para 1.

db.adminCommand( {
setParameter: 1,
logComponentVerbosity: {
verbosity: 1,
query: {
verbosity: 2
},
storage: {
verbosity: 2,
journal: {
verbosity: 1
}
}
}
} )

Você definiria esses valores em mongosh.

Use o método db.setLogLevel() para atualizar um único nível de registro de componente. Para um componente, você pode especificar o nível de verbosidade de 0 a 5 ou pode especificar -1 para herdar a verbosidade do componente principal. Por exemplo, o seguinte define o systemLog.component.query.verbosity para sua verbosidade pai (ou seja, verosidade padrão):

db.setLogLevel(-1, "query")

Você definiria este valor de mongosh.

[2](1, 2, 3, 4, 5) A partir da versão 4.2, os nós secundários de um conjunto de réplicas agora registram entradas oplog que demoram mais do que o limite de operação lenta para serem aplicadas. O seguinte atrasa mensagens no oplog:
  • São registradas para os secundários no diagnostic log.
  • São registradas no componente REPL com o texto applied op: <oplog entry> took <num>ms.
  • Não dependem dos níveis de registro (seja no nível do sistema ou do componente)
  • Não dependem do nível de perfil.
  • São afetados por slowOpSampleRate.
O perfilador não captura entradas de oplog lentas.

As operações do cliente (como queries) aparecem no registro se a duração exceder o limite de operação lenta ou quando o nível de verbosidade do registro for 1 ou superior. [2] Essas entradas de registro incluem o objeto de comando completo associado à operação.

A partir do MongoDB 4.2, as entradas do analisador e as mensagens de registro de diagnóstico (ou seja, mensagens de registro do mongod/mongos) para operações de leitura/gravação incluem:

A partir do MongoDB 5.0, as mensagens de registro de operações lentas incluem um campo remote que especifica o endereço IP do cliente.

A partir do MongoDB 6.2, as mensagens de registro de operação lenta incluem um campo queryFramework que indica qual mecanismo de consulta executou a consulta:

  • queryFramework: "classic" indica que o mecanismo clássico executou a consulta.

  • queryFramework: "sbe" indica que o mecanismo de execução de consulta baseado em slot executou a consulta.

A partir do MongoDB 6.1, mensagens de registro de operação lenta incluem campos de tempo de atualização de cache.

A partir do MongoDB 6.3, as mensagens de registro de operação lenta e as entradas do analisador de banco de dados incluem um campo cpuNanos que especifica o tempo total de CPU gasto por uma operação de query em nanossegundos. O campo cpuNanos está disponível somente em sistemas Linux.

A partir do MongoDB 7.0 (e 6.0.13, 5.0.24), o totalOplogSlotDurationMicros na mensagem de registro de query lenta mostra o tempo entre uma operação de gravação obter um commit carimbo de data/hora para confirmar as gravações do mecanismo de armazenamento e a confirmação efetiva. mongod suporta gravações paralelas. No entanto, ele confirma operações de gravação com registros de data e hora de confirmação em qualquer ordem.

Exemplo

Considere as seguintes operações de escrita com carimbos de data/hora de função commit:

  • writeA com Timestamp1

  • writeB com Timestamp2

  • writeC com Timestamp3

Suponha que writeB seja confirmado primeiro em Timestamp2. A replicação é pausada até que writeA confirme porque a entrada oplog de writeA com Timestamp1 é necessária para que a replicação copie o oplog para membros secundários do conjunto de réplicas.

Para obter um exemplo de impressão bonita de uma entrada de registro de operação lenta, consulte Exemplos de mensagens de registro.

Novidades na versão 5,0.

A partir do MongoDB 5.0, você pode usar o campo de registro remoteOpWaitMillis para obter o tempo de espera (em milissegundos) para resultados de shards.

remoteOpWaitMillis só está registrado:

Para determinar se uma operação de mesclagem ou um problema de shard está causando uma consulta lenta, compare os campos de tempo durationMillis e remoteOpWaitMillis no registro. durationMillis é o tempo total que a query levou para ser concluída. Especificamente:

  • Se durationMillis for um pouco mais longo que remoteOpWaitMillis, então a maior parte do tempo foi gasta aguardando uma resposta do shard. Por exemplo, durationMillis de 17 e remoteOpWaitMillis de 15.

  • Se durationMillis for significativamente maior que remoteOpWaitMillis, a maior parte do tempo foi gasta realizando a mesclagem. Por exemplo, durationMillis de 100 e remoteOpWaitMillis de 15.

Ao utilizar o Queryable Encryption, as operações CRUD para collections criptografadas são omitidas do registro de query lenta. Para obter detalhes, consulte Redação de Queryable Encryption.

Disponível apenas no MongoDB Enterprise

Um mongod ou mongos em execução com redactClientLogData elimina qualquer mensagem que acompanhe um determinado evento de registro antes do registro, deixando apenas metadados, arquivos de origem ou números de linha relacionados ao evento. redactClientLogData impede a entrada de informações sensíveis no registro do sistema, mas reduz a quantidade de detalhes disponíveis para diagnóstico.

Por exemplo, a operação a seguir insere um documento em um mongod em execução sem redação de registro. O mongod tem o nível de verbosidade do registro definido como 1:

db.clients.insertOne( { "name" : "Joe", "PII" : "Sensitive Information" } )

Esta operação produz o seguinte evento de registro:

2017-06-09T13:35:23.446-04:00 I COMMAND [conn1] command internal.clients
appName: "MongoDB Shell"
command: insert {
insert: "clients",
documents: [ {
_id: ObjectId('593adc5b99001b7d119d0c97'),
name: "Joe",
PII: " Sensitive Information"
} ],
ordered: true
}
...

Quando mongod é executado com redactClientLogData e executa a mesma operação de inserção, ele produz o seguinte evento de registro:

2017-06-09T13:45:18.599-04:00 I COMMAND [conn1] command internal.clients
appName: "MongoDB Shell"
command: insert {
insert: "###", documents: [ {
_id: "###", name: "###", PII: "###"
} ],
ordered: "###"
}

Use redactClientLogData em conjunto com Encryption at Rest e TLS/SSL (criptografia de transporte) para auxiliar a conformidade com os requisitos normativos.

A análise de registros é o ato de pesquisar e analisar programaticamente arquivos de log, geralmente de maneira automatizada. Com a introdução do registro estruturado, a análise de registro ficou mais simples e mais avançada. Por exemplo:

  • Os campos de mensagens de registro são apresentados como pares de valores-chave. Os analisadores de registro podem realizar queries por chaves de interesse específicas para filtrar os resultados com eficiência.

  • As mensagens de registro sempre contêm a mesma estrutura de mensagem. Os analisadores de registros podem extrair informações de forma confiável de qualquer mensagem de registro, sem a necessidade de codificar para casos em que as informações estejam ausentes ou formatadas de forma diferente.

Os exemplos a seguir demonstram fluxos de trabalho de análise de registro típicos ao trabalhar com saída de registros JSON do MongoDB.

Ao trabalhar com o log estruturado do MongoDB, o utilitário de linha de comando jqde terceiros é uma ferramenta útil que permite a impressão fácil e bonita de entradas de registro e a poderosa correspondência e filtragem baseadas em chaves.

jq é um analisador JSON de código aberto, e está disponível para Linux, Windows e macOS.

Esses exemplos usam jq para simplificar a análise de registros.

O exemplo a seguir mostra os 10 principais valores de mensagem únicos em um determinado arquivo de log, classificados por frequência:

jq -r ".msg" /var/log/mongodb/mongod.log | sort | uniq -c | sort -rn | head -10

As conexões de clientes remotos são mostradas no registro sob a chave "remota" no objeto de atributo. O seguinte conta todas as conexões exclusivas ao longo do arquivo de registro e as apresenta em ordem decrescente por número de ocorrências:

jq -r '.attr.remote' /var/log/mongodb/mongod.log | grep -v 'null' | sort | uniq -c | sort -r

Observe que as conexões do mesmo endereço IP, mas que se conectam por portas diferentes, são tratadas como conexões diferentes por esse comando. Você poderia limitar a saída para considerar apenas endereços IP, com a seguinte alteração:

jq -r '.attr.remote' /var/log/mongodb/mongod.log | grep -v 'null' | awk -F':' '{print $1}' | sort | uniq -c | sort -r

O exemplo a seguir conta todas as conexões do driver MongoDB remoto e apresenta cada tipo e versão de driver em ordem decrescente por número de ocorrências:

jq -cr '.attr.doc.driver' /var/log/mongodb/mongod.log | grep -v null | sort | uniq -c | sort -rn

O exemplo a seguir examina os dados de clientes que se conectam ao MongoDB através de drivers e aplicativos remotos, incluindo mongosh, e gera um relatório com a contagem de conexões para cada tipo de sistema operacional único que se conectou, ordenado por frequência:

jq -r '.attr.doc.os.type' /var/log/mongodb/mongod.log | grep -v null | sort | uniq -c | sort -rn

A string "Darwin", conforme apresentada neste campo de registro, representa um cliente macOS.

Com o registro de operação lenta ativado, somente as operações lentas que levaram mais 2000 milissegundos serão retornadas:, para análise posterior:

jq 'select(.attr.durationMillis>=2000)' /var/log/mongodb/mongod.log

Consulte a documentação do jq para obter mais informações sobre os jq filtros mostrados neste exemplo.

Os componentes de registro (o terceiro campo no formato de saída de registro JSON) indicam a categoria geral em que uma determinada mensagem de registro se enquadra. A filtragem por componente costuma ser um ótimo ponto de partida ao analisar mensagens de registro para eventos relevantes.

O exemplo a seguir imprime apenas as mensagens de registro do tipo componente REPL:

jq 'select(.c=="REPL")' /var/log/mongodb/mongod.log

O exemplo a seguir imprime todas as mensagens de registro , exceto aquelas do tipo de componente REPL:

jq 'select(.c!="REPL")' /var/log/mongodb/mongod.log

O exemplo a seguir imprime mensagens de registro do tipo de componente REPL ou STORAGE:

jq 'select( .c as $c | ["REPL", "STORAGE"] | index($c) )' /var/log/mongodb/mongod.log

Consulte a documentação do jq para obter mais informações sobre os jq filtros mostrados neste exemplo.

As ID de registro (o quinto campo no formato de saída de registro JSON) são mapeadas para eventos de registro específicos e podem ser usadas para permanecer estáveis em sucessivas versões do MongoDB.

Como exemplo, você pode estar interessado nos dois eventos de registro a seguir, que mostram uma conexão de cliente seguida de uma desconexão:

{"t":{"$date":"2020-06-01T13:06:59.027-0500"},"s":"I", "c":"NETWORK", "id":22943, "ctx":"listener", "svc": "R", "msg":"connection accepted from {session_remote} #{session_id} ({connectionCount}{word} now open)", "attr":{"session_remote":"127.0.0.1:61298", "session_id":164,"connectionCount":11,"word":" connections"}}
{"t":{"$date":"2020-06-01T13:07:03.490-0500"},"s":"I", "c":"NETWORK", "id":22944, "ctx":"conn157", "svc": "R", "msg":"end connection {remote} ({connectionCount}{word} now open)", "attr":{"remote":"127.0.0.1:61298","connectionCount":10,"word":" connections"}}

As IDs de registro para essas duas entradas são 22943 e 22944, respectivamente. Você pode então filtrar a saída do registro para mostrar apenas esses IDs de registro, mostrando efetivamente apenas a atividade de conexão do cliente, usando a seguinte sintaxe jq:

jq 'select( .id as $id | [22943, 22944] | index($id) )' /var/log/mongodb/mongod.log

Consulte a documentação do jq para obter mais informações sobre os jq filtros mostrados neste exemplo.

A saída do registro pode ser ainda mais refinada filtrando-se o campo de registro de data e hora, limitando as entradas de registro retornadas a uma faixa de datas específica. Por exemplo, o seguinte retorna todas as entradas de registro que ocorreram em 15 de abril de 2020:

jq 'select(.t["$date"] >= "2020-04-15T00:00:00.000" and .t["$date"] <= "2020-04-15T23:59:59.999")' /var/log/mongodb/mongod.log

Observe que essa sintaxe inclui o carimbo de data/hora completo, incluindo milissegundos, mas excluindo o ajuste do fuso horário.

A filtragem por faixa de datas pode ser combinada com qualquer um dos exemplos acima, criando relatórios semanais ou resumos anuais, por exemplo. A sintaxe a seguir amplia o exemplo "Monitorando Conexões" anterior para restringir os resultados ao mês de maio de 2020:

jq 'select(.t["$date"] >= "2020-05-01T00:00:00.000" and .t["$date"] <= "2020-05-31T23:59:59.999" and .attr.remote)' /var/log/mongodb/mongod.log

Consulte a documentação do jq para obter mais informações sobre os jq filtros mostrados neste exemplo.

Os serviços de ingestão de registros são produtos de terceiros que contêm e agregam arquivos de log, geralmente de um cluster distribuído de sistemas, e fornecem análise contínua desses dados em um local central.

O formato de registro JSON permite mais flexibilidade ao trabalhar com serviços de análise e ingestão de registro. Enquanto os registros de texto sem formatação geralmente exigem algum tipo de transformação antes de serem qualificados para uso com esses produtos, os arquivos JSON geralmente podem ser consumidos prontamente, dependendo do serviço. Além disso, os registros formatados em JSON oferecem mais controle ao executar a filtragem para esses serviços, pois a estrutura de chave-valor oferece a capacidade de importar especificamente somente os campos de interesse, enquanto omite o restante.

Consulte a documentação do serviço de ingestão de registros de terceiros escolhido para obter mais informações.

Os exemplos a seguir mostram mensagens de registro no formato de saída JSON.

Essas mensagens de registro são apresentados em formato impresso por conveniência.

Este exemplo mostra um aviso de inicialização:

{
"t": {
"$date": "2020-05-20T19:17:06.188+00:00"
},
"s": "W",
"c": "CONTROL",
"id": 22120,
"ctx": "initandlisten",
"svc": "R",
"msg": "Access control is not enabled for the database. Read and write access to data and configuration is unrestricted",
"tags": [
"startupWarnings"
]
}

Este exemplo mostra uma conexão de cliente que inclui dados do cliente:

{
"t": {
"$date": "2020-05-20T19:18:40.604+00:00"
},
"s": "I",
"c": "NETWORK",
"id": 51800,
"ctx": "conn281",
"svc": "R",
"msg": "client metadata",
"attr": {
"remote": "192.168.14.15:37666",
"client": "conn281",
"doc": {
"application": {
"name": "MongoDB Shell"
},
"driver": {
"name": "MongoDB Internal Client",
"version": "4.4.0"
},
"os": {
"type": "Linux",
"name": "CentOS Linux release 8.0.1905 (Core) ",
"architecture": "x86_64",
"version": "Kernel 4.18.0-80.11.2.el8_0.x86_64"
}
}
}
}

Este exemplo mostra uma mensagem de operação lenta:

{
"t": {
"$date": "2023-05-24T13:46:27.853+00:00"
},
"s": "I",
"c": "COMMAND",
"id": 51803,
"ctx": "conn3",
"svc": "R",
"msg": "Slow query",
"attr": {
"type": "command",
"ns": "db.coll",
"appName": "MongoDB Shell",
"command": {
"find": "coll",
"filter": {
"b": -1
},
"lsid": {
"id": {
"$uuid": "5d50b19c-8559-420a-a122-8834e012274a"
}
},
"$db": "db"
},
"planSummary": "COLLSCAN",
"planningTimeMicros": 228,
"keysExamined": 0,
"docsExamined": 232922,
"fromPlanCache": true,
"nBatches": 1,
"cursorExhausted": true,
"numYields": 232,
"nreturned": 0,
"queryHash": "9C05019A",
"planCacheKey": "C41063D6",
"queryFramework": "sbe",
"reslen": 96,
"locks": {
"FeatureCompatibilityVersion": {
"acquireCount": {
"r": 233
}
},
"Global": {
"acquireCount": {
"r": 233
}
}
},
"storage": {},
"cpuNanos": 111410254,
"remote": "127.0.0.1:47150",
"protocol": "op_msg",
"durationMillis": 111
}
}

Este exemplo demonstra o escape de caracteres, como mostrado no campo setName do objeto de atributo:

{
"t": {
"$date": "2020-05-20T19:11:09.268+00:00"
},
"s": "I",
"c": "REPL",
"id": 21752,
"ctx": "ReplCoord-0",
"svc": "R",
"msg": "Scheduling remote command request",
"attr": {
"context": "vote request",
"request": "RemoteCommand 229 -- target:localhost:27003 db:admin cmd:{ replSetRequestVotes: 1, setName: \"my-replica-name\", dryRun: true, term: 3, candidateIndex: 0, configVersion: 2, configTerm: 3, lastAppliedOpTime: { ts: Timestamp(1589915409, 1), t: 3 } }"
}
}

A partir do MongoDB 5.0, as mensagens de registro para queries lentas sobre visualizações incluem um campo resolvedViews que contém os detalhes da visualização:

"resolvedViews": [ {
"viewNamespace": <String>, // namespace and view name
"dependencyChain": <Array of strings>, // view name and collection
"resolvedPipeline": <Array of documents> // aggregation pipeline for view
} ]

O exemplo a seguir utiliza o banco de dados do test e cria uma visualização denominada myView que classifica os documentos no myCollection pelo campo firstName:

use test
db.createView( "myView", "myCollection", [ { $sort: { "firstName" : 1 } } ] )

Suponha que uma query lenta seja executada em myView. O exemplo de mensagem de log a seguir contém um campo resolvedViews para myView:

{
"t": {
"$date": "2021-09-30T17:53:54.646+00:00"
},
"s": "I",
"c": "COMMAND",
"id": 51803,
"ctx": "conn249",
"svc": "R",
"msg": "Slow query",
"attr": {
"type": "command",
"ns": "test.myView",
"appName": "MongoDB Shell",
"command": {
"find": "myView",
"filter": {},
"lsid": {
"id": { "$uuid": "ad176471-60e5-4e82-b977-156a9970d30f" }
},
"$db": "test"
},
"planSummary":"COLLSCAN",
"resolvedViews": [ {
"viewNamespace": "test.myView",
"dependencyChain": [ "myView", "myCollection" ],
"resolvedPipeline": [ { "$sort": { "firstName": 1 } } ]
} ],
"keysExamined": 0,
"docsExamined": 1,
"hasSortStage": true,
"cursorExhausted": true,
"numYields": 0,
"nreturned": 1,
"queryHash": "3344645B",
"planCacheKey": "1D3DE690",
"queryFramework": "classic"
"reslen": 134,
"locks": { "ParallelBatchWriterMode": { "acquireCount": { "r": 1 } },
"ReplicationStateTransition": { "acquireCount": { "w": 1 } },
"Global": { "acquireCount": { "r": 4 } },
"Database": { "acquireCount": {"r": 1 } },
"Collection": { "acquireCount": { "r": 1 } },
"Mutex": { "acquireCount": { "r": 4 } } },
"storage": {},
"remote": "127.0.0.1:34868",
"protocol": "op_msg",
"durationMillis": 0
}
}
}

A partir do MongoDB 5.0, as mensagens de registro para queries lentas incluem uma seção system.profile.authorization . Essas métricas ajudam a determinar se uma solicitação está atrasada devido à contenção do cache de autorização do usuário.

"authorization": {
"startedUserCacheAcquisitionAttempts": 1,
"completedUserCacheAcquisitionAttempts": 1,
"userCacheWaitTimeMicros": 508
},

A partir do MongoDB 6.3, uma mensagem é adicionada ao registro se o tempo para enviar uma resposta de operação exceder a opção de limite slowms.

A mensagem é conhecida como mensagem de registro do fluxo de trabalho da sessão e contém vários horários para executar uma operação em uma sessão de banco de dados.

Exemplo de mensagem de registro do fluxo de trabalho da sessão:

{
"t": {
"$date": "2022-12-14T17:22:44.233+00:00"
},
"s": "I",
"c": "EXECUTOR",
"id": 6983000,
"ctx": "conn1",
"svc": "R",
"msg": "Slow network response send time",
"attr": {
"elapsed": {
"totalMillis": 109,
"activeMillis": 30,
"receiveWorkMillis": 2,
"processWorkMillis": 10,
"sendResponseMillis": 22,
"yieldMillis": 15,
"finalizeMillis": 30
}
}
}

Os tempos estão em milissegundos.

Uma mensagem de fluxo de trabalho de sessão será adicionada ao registro se sendResponseMillis exceder a opção de limite de lentidão.

Campo
Descrição
totalMillis
Tempo total para executar a operação na sessão, que inclui o tempo gasto aguardando o recebimento de uma mensagem.
activeMillis
Tempo entre receber uma mensagem e concluir a operação associada a essa mensagem. O tempo inclui o envio de uma resposta e a realização de qualquer limpeza.
receivedWorkMillis
Tempo para receber as informações da operação pela rede.
processWorkMillis
Tempo para processar a operação e criar a resposta.
sendResponseMillis
Hora de enviar a resposta.
yieldMillis
Tempo entre a liberação da thread de trabalho e a thread sendo usada novamente.
finalize
É hora de encerrar e fechar o fluxo de trabalho da sessão.

A partir do MongoDB 6.3, uma mensagem será adicionada ao registro se o tempo que uma operação esperou entre a aquisição de uma conexão de servidor e a gravação dos bytes a serem enviados ao servidor pela rede exceder 1 milissegundo.

Por padrão, a mensagem é registrada no nível de informação "I" e no máximo uma vez por segundo para evitar muitas mensagens de registro. Se você precisar obter todas as mensagens de registro, altere o nível de registro para depurar.

Se o tempo de espera da operação exceder 1 milissegundo e a mensagem for registrada no nível de informações no último segundo, a próxima mensagem será registrada no nível de depuração. Caso contrário, a próxima mensagem será registrada no nível de informação.

Exemplo de mensagem de registro:

{
"t": {
"$date":"2023-01-31T15:22:29.473+00:00"
},
"s": "I",
"c": "NETWORK",
"id": 6496702,
"ctx": "ReplicaSetMonitor-TaskExecutor",
"svc": "R",
"msg": "Acquired connection for remote operation and completed writing to wire",
"attr": {
"durationMicros": 1683
}
}

A tabela a seguir descreve o campo durationMicros em attr.

Campo
Descrição
durationMicros
Tempo em microssegundos que a operação esperou entre a aquisição de uma conexão com o servidor e a gravação dos bytes para enviar ao servidor pela rede.

A partir do MongoDB 6.1, as mensagens de log para queries lentas incluem os seguintes campos de tempo de atualização do cache:

  • catalogCacheDatabaseLookupDurationMillis

  • catalogCacheCollectionLookupDurationMillis

  • databaseVersionRefreshDurationMillis

  • shardVersionRefreshMillis

A partir do MongoDB 7.0, as mensagens de registro para queries lentas também incluem o campo catalogCacheIndexLookupDurationMillis , que indica o tempo que a operação gastou buscando informações do cache do índice. Esta versão também renomeia o campo shardVersionRefreshMillis para placementVersionRefreshMillis.

O exemplo a seguir inclui:

  • catalogCacheDatabaseLookupDurationMillis

  • catalogCacheCollectionLookupDurationMillis

  • catalogCacheIndexLookupDurationMillis

{
"t": {
"$date": "2023-03-17T09:47:55.929+00:00"
},
"s": "I",
"c": "COMMAND",
"id": 51803,
"ctx": "conn14",
"svc": "R",
"msg": "Slow query",
"attr": {
"type": "command",
"ns": "db.coll",
"appName": "MongoDB Shell",
"command": {
"insert": "coll",
"ordered": true,
"lsid": {
"id": {
"$uuid": "5d50b19c-8559-420a-a122-8834e012274a"
}
},
"$clusterTime": {
"clusterTime": {
"$timestamp": {
"t": 1679046398,
"i": 8
}
},
"signature": {
"hash": {
"$binary": {
"base64": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"subType": "0"
}
},
"keyId": 0
}
},
"$db": "db"
},
"catalogCacheDatabaseLookupDurationMillis": 19,
"catalogCacheCollectionLookupDurationMillis": 68,
"catalogCacheIndexLookupDurationMillis": 16026,
"nShards": 1,
"ninserted": 1,
"numYields": 232,
"reslen": 96,
"readConcern": {
"level": "local",
"provenance": "implicitDefault",
},
"cpuNanos": 29640339,
"remote": "127.0.0.1:48510",
"protocol": "op_msg",
"remoteOpWaitMillis": 4078,
"durationMillis": 20334
}
}

Em um sistema Linux, as mensagens estão sujeitas às regras definidas no arquivo de configuração do Linux /etc/systemd/journald.conf. Por padrão, as intermitências de mensagens de registro são limitadas a 1.000 mensagens em um período de 30 segundos. Para ver mais mensagens, aumente o parâmetro RateLimitBurst em /etc/systemd/journald.conf.

Você pode usar o MongoDB Atlas para baixar um arquivo compactado contendo os registros de um nome de host ou processo selecionado em seu sistema de banco de dados. Para saber mais, consulte Exibir e baixar registros do MongoDB.

← Glossário