getLog
Definição
getLog
getLog
é um comando administrativo que retorna os eventosmongod
mais recentes registrados em 1024.getLog
não lê dados de log do arquivo de logmongod
. Em vez disso, ele lê dados de um cache de RAM de eventos domongod
registrados. Para executargetLog
, use o métododb.adminCommand()
.getLog
retorna dados de registro no formato Extended JSON v2.0 relaxado com escape. Anteriormente, os dados de registro retornavam como texto simples.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é suportado em todos os clusters do MongoDB Atlas . Para obter informações sobre o suporte do Atlas para todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { getLog: <value> } )
Campos de comando
Os valores possíveis para getLog
são:
Valor | Descrição |
---|---|
* | Retorna uma lista dos valores disponíveis para o comando getLog . |
global | Retorna a saída combinada de todas as entradas de log recentes. |
startupWarnings | Retorna entradas de registro que podem conter erros ou avisos do registro do MongoDB de quando o processo atual foi iniciado. Se mongod foi iniciado sem avisos, esse filtro pode retornar uma array vazia. |
Observação
O comando getLog
não aceita mais o valor rs
, pois essa categorização do tipo de mensagem foi preterida. Em vez disso, as mensagens de log agora são sempre identificadas por seu componente, incluindo REPL em mensagens de replicação. Consulte Filtragem por componente para ver exemplos de análise de logs que filtram o campo de componente.
Saída
Se especificado *
, o comando retorna um documento com os nomes dos outros valores aceitáveis.
Caso contrário, o comando retorna um documento que inclui os seguintes campos:
totalLinesWritten
campo que contém o número de eventos de loglog
campo que contém uma array de eventos de logUm documento de resposta
db.adminCommand()
contendo informações de status e data e hora.
Comportamento
Truncamento de linha
getLog
trunca todos os eventos que contiverem mais de 1024 caracteres.
Escape de caracteres
getLog
retorna dados de log no formato JSON v2.0 estendido no modo relaxado com escape, usando as seguintes sequências de escape para renderizar a saída do log como JSON válido:
Caractere representado | Sequência de fuga |
---|---|
Aspas ( " ) | \" |
Backslash ( \ ) | \\ |
Backspace ( 0x08 ) | \b |
Formfeed ( 0x0C ) | \f |
Newline ( 0x0A ) | \n |
Quebra de linha ( 0x0D ) | \r |
Horizontal tab ( 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
.
Filtragem
Dentro de mongosh
getLog
a saída pode ser filtrada para tornar os resultados mais legíveis ou para corresponder a critérios específicos.
A operação a seguir imprime apenas o campo log
(que contém a array de todos os eventos de log recentes) e remove caracteres que escapam de cada mensagem de log:
db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})
Essa operação apresenta a saída getLog
no mesmo formato que o log file
do MongoDB.
Fora de mongosh
com jq
Ao trabalhar com o log estruturado do MongoDB, o utilitário de linha de comando jq de terceiros é uma ferramenta útil que possibilita a impressão bonita e fácil de entradas de log, além de correspondência e filtragem avançadas baseada em chaves.
jq
é um analisador JSON de código aberto, e está disponível para Linux, Windows e macOS.
Para usar jq
com a saída getLog
, você deve usar a opção --eval
para o mongosh
. A operação a seguir usa jq
para filtrar o componente REPL e apresentar apenas as mensagens de log associadas à replicação:
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -c '. | select(.c=="REPL")'
Certifique-se de fornecer quaisquer parâmetros específicos da conexão necessários para o mongosh
, conforme necessário, como --host
ou --port
.
Consulte Analisar mensagens de registro estruturadas para obter mais exemplos de filtragem de saída de registro utilizando jq
. A sintaxe jq
apresentada em cada exemplo vinculado pode ser utilizada com a operação mongo --eval
acima com mínimo ajuste. Por exemplo, a seguinte sintaxe adapta o exemplo "Contando mensagens únicas" vinculado para uso com getLog
:
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -r ".msg" | sort | uniq -c | sort -rn | head -10
Exemplos
Recuperar filtros de registro disponíveis
A operação a seguir, executada a partir de mongosh
, retorna os filtros de log disponíveis para passá-los a getLog
:
db.adminCommand( { getLog: "*" } )
A operação retorna o seguinte documento:
{ "names" : [ "global", "startupWarnings" ], "ok" : 1 }
Recuperar eventos recentes de registro
A operação a seguir, executada a partir do mongosh
, recupera os eventos global
mais recentes para o mongod
:
db.adminCommand( { getLog : "global" } )
A operação retorna um documento semelhante ao seguinte:
{ "totalLinesWritten" : <num>, "log" : [ "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":4615611, \"ctx\":\"initandlisten\",\"msg\":\"MongoDB starting\",\"attr\":{\"pid\":12345,\"port\":27001,\"dbPath\":\"/var/lib/mongo\",\"architecture\":\"64-bit\",\"host\":\"server1.example.com\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":23403, \"ctx\":\"initandlisten\",\"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-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":51765, \"ctx\":\"initandlisten\",\"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\"}}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":21951, \"ctx\":\"initandlisten\",\"msg\":\"Options set by command line\",\"attr\":{\"options\":{\"config\":\"/etc/mongod.conf\",\"net\":{\"bindIp\":\"127.0.0.1\",\"port\":27001},\"processManagement\":{\"fork\":true,\"timeZoneInfo\":\"/usr/share/zoneinfo\"},\"replication\":{\"replSetName\":\"repl-shard1\"},\"sharding\":{\"clusterRole\":\"shardsvr\"},\"storage\":{\"dbPath\":\"/var/lib/mongo\",\"journal\":{\"enabled\":true},\"wiredTiger\":{\"engineConfig\":{\"cacheSizeGB\":0.1}}},\"systemLog\":{\"destination\":\"file\",\"logAppend\":true,\"path\":\"/var/log/mongodb/mongod.log\"}}}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.873+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":22270, \"ctx\":\"initandlisten\",\"msg\":\"Storage engine to use detected by data files\",\"attr\":{\"dbpath\":\"/var/lib/mongo\",\"storageEngine\":\"wiredTiger\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.873+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":22315, \"ctx\":\"initandlisten\",\"msg\":\"wiredtiger_open config\",\"attr\":{\"config\":\"create,cache_size=102M,session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000,close_scan_interval=10,close_handle_minimum=250),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress,compact_progress],\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server1.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server2.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server3.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server4.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server5.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server6.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23015, \"ctx\":\"listener\",\"msg\":\"Listening on\",\"attr\":{\"address\":\"/tmp/mongodb-27001.sock\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23015, \"ctx\":\"listener\",\"msg\":\"Listening on\",\"attr\":{\"address\":\"127.0.0.1\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23016, \"ctx\":\"listener\",\"msg\":\"Waiting for connections\",\"attr\":{\"port\":27001,\"ssl\":\"off\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:15:10.392+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22943, \"ctx\":\"listener\",\"msg\":\"connection accepted\",\"attr\":{\"remote\":\"127.0.0.1:35724\",\"sessionId\":67,\"connectionCount\":30}}", "{\"t\":{\"$date\":\"2020-05-19T19:15:10.393+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":51800, \"ctx\":\"conn67\",\"msg\":\"client metadata\",\"attr\":{\"remote\":\"127.0.0.1:35724\",\"client\":\"conn67\",\"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\"}}}}" ], "ok" : 1, "$gleStats" : { "lastOpTime" : Timestamp(<ts>), "electionId" : ObjectId(<id>) }, "lastCommittedOpTime" : Timestamp(<ts>), "$configServerState" : { "opTime" : { "ts" : Timestamp(<ts>), "t" : NumberLong(8) } }, "$clusterTime" : { "clusterTime" : Timestamp(<ts>), "signature" : { "hash" : BinData(<bin>), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(<ts>) }