1. 配置日志路径与级别
在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. 实现日志轮转(避免文件过大)
使用Linux系统自带的logrotate工具自动化管理日志轮转,编辑/etc/logrotate.d/mongodb文件,添加以下配置:
/var/log/mongodb/mongod.log {
daily # 每日轮转
rotate 7 # 保留7个历史日志文件
compress # 压缩旧日志(gzip)
missingok # 日志文件丢失时不报错
notifempty # 日志为空时不轮转
create 0640 mongodb adm # 新日志文件权限与属主(需提前创建mongodb用户和adm组)
sharedscripts # 所有日志轮转完成后执行postrotate脚本
postrotate
/bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock) # 通知MongoDB重新打开日志文件
endscript
}
配置完成后,logrotate会按规则自动处理日志,无需手动干预。
3. 日志内容查看与实时监控
tail -f命令,如tail -f /var/log/mongodb/mongod.log,可实时查看新增日志条目(适合排查实时问题);head -n 20 /var/log/mongodb/mongod.log(查看前20行)、tail -n 50 /var/log/mongodb/mongod.log(查看后50行);less命令(如less /var/log/mongodb/mongod.log),支持上下翻页、关键字搜索(按/键输入关键字)。4. 日志分析与故障排查
grep过滤关键信息(如错误日志grep "ERROR" /var/log/mongodb/mongod.log)、awk提取字段(如提取时间戳和操作awk '{print $1, $3}' /var/log/mongodb/mongod.log);jq:处理JSON格式日志(如提取慢查询jq '. | select(.attr.durationMillis >= 6000)' mongod.log);mtools:专为MongoDB日志设计的Python工具集,可实现慢查询筛选(mlogfilter --slow 60000 replsvr.log)、查询可视化(mplotqueries --group namespace log.txt);5. 日志安全管理(权限控制)
为防止敏感数据泄露,需限制日志文件的访问权限:
mongodb用户,属组设为adm(或其他运维组):chown mongodb:adm /var/log/mongodb/mongod.log;0640(属主可读写,属组可读,其他用户无权限):chmod 0640 /var/log/mongodb/mongod.log。6. 高级技巧:集中式日志管理
对于多节点MongoDB集群,建议部署集中式日志平台(如Graylog、ELK Stack),实现日志的统一收集、存储、检索和可视化: