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