MongoDB的日志配置主要通过/etc/mongod.conf文件完成,关键参数如下:
file(文件存储)或stderr(标准错误输出),生产环境推荐file。path参数指定,如/var/log/mongodb/mongod.log(默认路径)。logAppend设为true(重启后追加日志)或false(重启后创建新日志)。verbosity控制日志级别(0=默认,1=信息,2=警告,3=错误,4=严重错误),数值越大输出越详细。示例配置:
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
verbosity: 1
修改配置后,需重启MongoDB服务使更改生效:
sudo systemctl restart mongod
日志轮转用于防止日志文件过大,常用方法有两种:
创建/etc/logrotate.d/mongodb文件,添加以下配置(按需调整):
/var/log/mongodb/mongod.log {
daily # 每天轮转一次
rotate 7 # 保留7个旧日志文件
compress # 压缩旧日志(gzip)
missingok # 日志文件丢失时不报错
notifempty # 日志为空时不轮转
create 640 mongodb adm # 新日志文件权限与所有者
sharedscripts # 所有日志轮转完成后执行postrotate
postrotate
/bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid) # 向mongod发送SIGUSR1信号,通知其切换日志文件
endscript
}
配置完成后,logrotate会自动按daily周期执行(可通过sudo logrotate -vf /etc/logrotate.d/mongodb手动测试)。
通过MongoDB shell执行logRotate命令:
mongo --quiet --eval "db.adminCommand({ logRotate: 1 })"
或向mongod进程发送SIGUSR1信号(需替换为实际PID):
kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid)
tail -f命令追踪日志更新:tail -f /var/log/mongodb/mongod.log
grep筛选关键字(如ERROR):grep "ERROR" /var/log/mongodb/mongod.log
less命令分页浏览(按q退出):less /var/log/mongodb/mongod.log
mkdir -p /var/log/mongodb/archive
find /var/log/mongodb/ -name "mongod.log.*" -mtime +30 -exec mv {} /var/log/mongodb/archive/ \;
gzip /var/log/mongodb/archive/*.log
logrotate的maxage参数(如maxage 30)或find命令定期清理:find /var/log/mongodb/archive/ -name "*.gz" -mtime +30 -delete
mtools(Python工具集)分析日志,如mlogfilter筛选慢查询、mplotqueries生成查询时间线图:sudo pip3 install mtools
mlogfilter /var/log/mongodb/mongod.log --slow 1000 | mplotqueries --type histogram
通过以上步骤,可实现MongoDB在CentOS上的日志配置、轮转、查看及归档,确保日志文件有序管理,便于问题排查与性能优化。