带你深入分析MongoDB中的日志模块

1. MongoDB中的日志模块介绍

MongoDB是一个开源文档数据库,常用于支持大型应用程序的数据存储。MongoDB的日志模块可以帮助用户跟踪数据库的所有活动,并支持生成详细的记录数据包,以进行事故调查和分析。在MongoDB中,所有的日志记录都是以文本文件的形式存储在硬盘上的。

2. MongoDB日志级别介绍

MongoDB中的日志级别有五个不同的级别:

2.1 日志级别0

日志级别0表示没有任何日志输出。这不是推荐的设置,因为它会导致你无法在出现问题时进行故障排除和分析。

2.2 日志级别1

日志级别1表示只输出致命错误的日志信息。这些日志信息包括无法访问数据文件或索引文件、服务器崩溃等。具体的日志信息可以在mongod.log文件中查看。

{"t":{"$date":"2022-01-05T13:20:09.516+08:00"},"s":"F", "c":"-", "id":23099, "ctx":"main","msg":"Caught exception in main()","attr":{"error":{"code":5,"codeName":"NoSuchKey","errmsg":"No password provided for user","ok":0,"operationTime":"[Timestamp(1641346216, 1)]","$clusterTime":{"clusterTime":"[Timestamp(1641346216, 1)]","signature":{"hash":"[Binary(Buffer.from("ZTjGxvTth+F+Eay6DJ+r7D4+L0Q=", "base64"), 0)]","keyId":"[6876543210123456789]"}}}}}

2.3 日志级别2

日志级别2输出错误信息和警告信息。这些日志信息包括网络错误、服务异常退出、某些文件无法访问等。

{"t":{"$date":"2022-01-05T13:20:09.616+08:00"},"s":"W", "c":"-", "id":20320, "ctx":"AlarmListener","msg":"AlarmListener ConnId(1499) recv() failed to read from client of length 0","attr":{"error":{"code":1,"codeName":"NetworkError","errmsg":"Connection reset by peer","ok":0,"operationTime":"[Timestamp(1641346227, 0)]","$clusterTime":{"clusterTime":"[Timestamp(1641346227, 0)]","signature":{"hash":"[Binary(Buffer.from("C1/rClolhWGt2nGvJyNF5iMTLfw=", "base64"), 0)]","keyId":"[6876543210123456789]"}}}}}

2.4 日志级别3

日志级别3输出信息日志,包括普通操作和故障消息。这对于评估系统的工作状态和进程非常重要。

{"t":{"$date":"2022-01-05T13:20:08.316+08:00"},"s":"I", "c":"NETWORK", "id":23217, "ctx":"conn7216","msg":"client metadata","attr":{"remote":"10.2.1.10:63825","client":"conn7216","doc":{"driver":{"name":"MongoDB Node.js Driver","version":"4.4.4"},"os":{"type":"Linux","name":"linux","architecture":"x64","version":"4.15.0-97-generic"}}}}

2.5 日志级别4

日志级别4将产生非常详细的输出,包括查询操作、索引操作、复制操作等。这些日志信息应该只在进行详细分析时进行启用。

{"t":{"$date":"2022-01-06T12:25:19.624+08:00"},"s":"D2", "c":"INDEX", "id":20340, "ctx":"conn1187","msg":" Index: (\"campusId\": NumberInt(10206), \"sentDate\": NumberLong(1641414518127))","attr":{"operationType":"IndexBuild","indexVersion":2,"indexBuildUUID":{"uuid":"6c2bd4c7-ce7c-4958-9fbf-a675814ca82b","server":"localhost:27017"},"durationMillis":{"beforeIndex":0,"insertBuildIndex":28,"total":28},"source":{"namespace":"aaa.bbb.mailqueue","command":{"createIndexes":"mailqueue","indexes":[{"key":{"campusId":1,"sentDate":-1},"name":"campusId_1_sentDate_-1"}],"writeConcern":{"w":"majority","wtimeout":0}}},"planSummary":"IXSCAN { campusId: 1.0, sentDate: -1.0 }","winningPlan":{"stage":"SORT","sortPattern":{"sentDate":-1},"inputStage":{"stage":"SORT_KEY_GENERATOR","inputStage":{"stage":"FETCH","filter":{"campusId":{"$eq":10206}},"inputStage":{"stage":"IXSCAN","keyPattern":{"campusId":1,"sentDate":-1},"indexName":"campusId_1_sentDate_-1","isMultiKey":false,"multiKeyPaths":{"campusId":[],"sentDate":[]},"isUnique":false,"isSparse":false,"isPartial":false,"indexVersion":2,"direction":{"campusId":1,"sentDate":-1},"indexBounds":{"campusId":["[10206, 10206]"],"sentDate":["[MaxKey, 1641414518127]"]},"keysExamined":58,"seeks":1,"dupsTested":0,"dupsDropped":0,"indexDef":{"keyPattern":{"campusId":1,"sentDate":-1},"clustering":{"campusId":1,"sentDate":-1},"sparse":false,"unique":false,"background":false,"version":2,"partialFilterExpression":null},"nReturned":58,"executionTimeMillisEstimate":0,"allPlansExecution":false}}})))

3. 启用MongoDB日志

默认情况下,MongoDB服务器以日志级别2运行,但是可以在命令行中指定不同的日志级别。最常用的方法是使用“--logpath”命令行选项指定一个文件来存储日志信息,如:

mongod --logpath /var/log/mongodb.log --logappend --fork

此命令行选项将MongoDB服务器的日志信息写入/var/log/mongodb.log文件中,并在文件尾部继续追加日志信息(如果文件不存在,则创建一个新文件)。如果您需要更详细的日志,请使用“--verbose”选项。

4. 总结

MongoDB的日志记录模块是一个强大的工具,可以帮助管理员跟踪服务器的所有活动,并进行故障排除和分析。MongoDB的日志级别有五个不同的级别,每个级别都提供不同程度的详细信息,可以根据不同的需求进行调整。在启用MongoDB日志时,可以使用命令行选项来指定日志文件的存储位置以及其他选项。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签