代码改变世界

MongoDB 的日志配置

2024-03-16 21:45  abce  阅读(1167)  评论(0编辑  收藏  举报

配置日志相关的参数

默认的配置文件是/etc/mongod.conf,可以在该文件中配置与日志相关的信息。比如:

more /etc/mongod.conf
# where to write logging data.
# Enable logging to a file
systemLog:
  quiet: false
  destination: file
  logAppend: true
  path: /data/log/mongod.log

这里:

·destination:定义日志存在哪里,可以设置为file、syslog

·path:日志文件的位置和名称。缺省是:/var/log/mongodb/mongod.log。如果设置了destination: file,就必须配置path

·verbosity:定义日志级别

·quiet:如果设置为true,mongodb会运行在quite模式,限制写入日志的量。生产环境通常建议设置为false

·traceAllExceptions:如果设置为true,会打印verbose信息,提供用于调试的额外信息

·syslogFacility:默认是user,与操作系统的syslog设置有关

·logAppend:如果设置为 true,重启后将日志条目追加到已经存在日志文件;如果设置为 false,重启后将创建新的日志文件,并将老的日志文件做备份。

·logRotate:设置日志文件rotation,可以设置成rename、reopen。rename会在老的日志文件后面加上时间戳,并打开新的日志文件;reopen会关闭原来的日志文件并重新打开它。

·timeStampFormat:设置时间戳格式

·component.<component>.verbosity:定义不同组件的日志级别,比如

  systemLog:
   component:
      accessControl:
         verbosity: <int>
      command:
         verbosity: <int>
      . . .

当然也可以登录mongodb后使用db.adminCommand()命令修改:

db.adminCommand( { setParameter: 1, <parameter>: <value> } )

查看日志内容

日志内容是json格式的,可以借助工具jq进行分析。比如:

sudo cat /var/log/mongodb/mongod.log | jq

输出结果:

. . .
{
  "t": {
    "$date": "2024-02-18T14:43:15.107-02:00"
  },
  "s": "I",
  "c": "NETWORK",
  "id": 24076,
  "ctx": "listener",
  "msg": "Waiting for connections",
  "attr": {
    "port": 27017,
    "ssl": "off"
  }
}

这里:

·t: 时间戳

·s: 日志严重级别

·c: 该条记录属于哪个组件

·id: 唯一标识符

·ctx: 上下文信息

·msg: 消息主体

·attr: 其它额外信息

·tags: 可选标签

·truncated: 截断信息

·size: 日志条目被截断之前的大小

日志的详细级别

配置:

. . .
systemLog:
  verbosity: 1
. . .

mongodb提供了以下的一些级别:

·F: Fatal messages.

·E: Error messages.

·W: Warning messages.

·I: Informational messages. Corresponds to numeric value 0.

·D1--D5: Debug messages, Corresponds to numeric value 1-5.

默认设置是 0。

 

查看当前的级别:

db.getLogComponents(){
        "verbosity" : 0,
        "accessControl" : {
                "verbosity" : -1
        },
        "command" : {
                "verbosity" : -1
        },
       ...
}

这里组件的级别是-1,表示继承父级别的设置。

日志内容分析

可以使用工具jq对mongodb的日志做分析。例如:

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