1. 配置日志路径与级别
在CentOS上,MongoDB的日志配置主要通过/etc/mongod.conf
文件完成。需设置systemLog
部分的关键参数:destination
指定日志输出目标(推荐file
,即文件存储);path
定义日志文件路径(默认/var/log/mongodb/mongod.log
);logAppend
设为true
以追加模式记录日志(避免重启时覆盖旧日志);verbosity
调整日志详细程度(0为默认,仅记录信息性消息;1为信息;2为警告;3为错误;4为严重错误)。例如:
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
verbosity: 1
2. 设置日志轮转
日志轮转是防止日志文件过大占满磁盘的核心手段,常用方法有两种:
/etc/logrotate.d/mongodb
文件,添加以下配置(每日轮转、保留7天、压缩旧日志、创建新文件时设置权限):/var/log/mongodb/mongod.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 mongodb adm
}
通过logrotate -f /etc/logrotate.d/mongodb
可手动触发轮转。db.adminCommand({logRotate: 1})
强制轮转当前日志文件。轮转后,原日志文件会以时间戳重命名(如mongod.log.2025-09-26
),新日志文件重新创建。3. 实时查看与过滤日志
tail -f /var/log/mongodb/mongod.log
命令,可实时监控日志文件的新增内容(按Ctrl+C
停止)。grep
命令筛选所需信息,例如查找错误日志:grep "ERROR" /var/log/mongodb/mongod.log
;查找包含“query”的慢查询日志:grep "query" /var/log/mongodb/mongod.log
。sed
命令提取指定时间范围的日志,例如查看2025年9月26日的日志:sed -n '/2025-09-26 00:00:00/,/2025-09-26 23:59:59/p' /var/log/mongodb/mongod.log
(需根据实际日志时间格式调整)。4. 清理与归档旧日志
find
命令删除指定天数前的日志文件,例如删除30天前的日志:find /var/log/mongodb/ -name "mongod.log.*" -mtime +30 -exec rm -f {} \;
。logrotate
的compress
参数自动压缩旧日志(如gzip
),或手动使用tar
命令归档:tar -czvf mongod_$(date +%Y-%m-%d).log.tar.gz /var/log/mongodb/mongod.log.*
。5. 监控日志与性能
mongostat
可实时显示MongoDB的性能统计信息(如读写次数、延迟);mongo --eval 'db.serverStatus()'
可获取实例的详细状态(包括日志缓冲区大小、日志写入次数)。