MongoDB在Linux中的日志管理主要通过修改配置文件实现,配置文件通常位于/etc/mongod.conf(新版本)或/etc/mongodb.conf(旧版本)。需重点配置以下参数:
systemLog.destination设置为file(文件输出),systemLog.path指定日志文件路径(如/var/log/mongodb/mongod.log),logAppend设为true确保日志追加而非覆盖。systemLog.verbosity参数调整日志详细程度,取值范围为0(仅致命错误)到4(非常详细),默认1(INFO级别,记录常规操作与诊断信息)。systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
verbosity: 1 # 可根据需求调整为0-4
修改后需重启MongoDB服务使配置生效:sudo systemctl restart mongod。
为避免日志文件占用过多磁盘空间,需使用logrotate工具实现自动轮转。编辑/etc/logrotate.d/mongodb文件,添加以下配置:
/var/log/mongodb/mongod.log {
daily # 每天轮转一次(可改为weekly/monthly)
rotate 7 # 保留最近7份日志
compress # 压缩旧日志(gzip格式)
missingok # 日志文件丢失时不报错
notifempty # 日志为空时不轮转
create 640 mongodb adm # 新日志文件权限与所有者(mongodb用户+adm组)
postrotate # 轮转后发送信号通知MongoDB重新打开日志文件
/bin/kill -SIGUSR1 `cat /var/run/mongodb.pid 2>/dev/null` 2>/dev/null || true
endscript
}
此配置可实现每日切割、保留7天、压缩旧日志的需求,确保日志文件有序管理。
tail -f命令追踪日志文件的实时变化,例如:tail -f /var/log/mongodb/mongod.log
可快速定位数据库运行中的异常(如连接失败、查询超时)。grep命令筛选关键信息,例如查看所有ERROR日志:grep "ERROR" /var/log/mongodb/mongod.log
less命令分页浏览日志文件(适合查看大文件):less /var/log/mongodb/mongod.log
按空格键翻页,q键退出。sudo pip3 install mtools;筛选慢查询(超过10秒):mlogfilter replsvr.log --slow 10000 | tail -n3;生成查询时间分布图:mplotqueries replsvr.log --group namespace --output-file query_time.png。jq '. | select(.attr.durationMillis>=6000)' replsvr.log。rsync命令:rsync -av /var/log/mongodb/mongod.log /backup/mongodb/
chmod与chown命令限制日志文件的访问权限,确保仅授权用户(如mongodb用户、adm组)可查看:chown mongodb:adm /var/log/mongodb/mongod.log
chmod 640 /var/log/mongodb/mongod.log
防止敏感信息泄露。db.adminCommand({logRotate: 1})
mongod.conf中配置operationProfiling部分:operationProfiling:
mode: slowOp # 记录慢查询
slowOpThresholdMs: 100 # 慢查询阈值(毫秒,默认100ms)
慢查询日志会记录在mongod.log中,便于优化查询性能。