要管理MongoDB日志,首先需修改其核心配置文件(通常位于/etc/mongod.conf),调整日志输出目标、路径和详细程度。关键配置项如下:
systemLog:
destination: file # 日志输出到文件(可选:stderr 输出到标准错误)
path: /var/log/mongodb/mongod.log # 日志文件路径(需确保目录存在且可写)
logAppend: true # 追加模式(避免重启时覆盖旧日志)
verbosity: 0 # 日志级别(0=默认,1=信息,2=警告,3=错误,4=严重错误)
修改后,通过sudo systemctl restart mongod重启服务使配置生效。
使用Linux自带的logrotate工具自动管理日志轮转,避免单个日志文件占用过多磁盘空间。步骤如下:
/etc/logrotate.d/mongodb文件,添加以下配置:/var/log/mongodb/mongod.log {
daily # 每天轮转一次(可选:weekly/monthly)
rotate 7 # 保留最近7份日志
compress # 压缩旧日志(节省空间)
missingok # 若日志文件丢失,不报错
notifempty # 日志为空时不轮转
create 0640 mongodb mongodb # 新日志文件权限与所有者(需与mongod运行用户一致)
sharedscripts # 所有日志轮转完成后执行脚本
postrotate # 轮转后发送信号通知mongod重新打开日志文件
if [ -f /var/run/mongodb.pid ]; then
kill -SIGUSR1 $(cat /var/run/mongodb.pid)
fi
endscript
}
该配置会每日切割日志,保留7天,并压缩旧日志。tail -f /var/log/mongodb/mongod.log命令,实时追踪日志输出(如查询、连接等事件)。grep命令提取关键信息,例如查看错误日志:grep "ERROR" /var/log/mongodb/mongod.log。awk统计错误日志数量:awk '/ERROR/{count++} END{print count}' /var/log/mongodb/mongod.log。若需记录执行时间超过阈值的查询(用于性能分析),需启用操作分析(Operation Profiling):
operationProfiling:
mode: slowOp # 模式:slowOp(仅记录慢查询)或 all(记录所有查询,生产环境慎用)
slowOpThresholdMs: 100 # 慢查询阈值(单位:毫秒,默认100ms)
启用后,慢查询日志会写入mongod.log,可通过db.adminCommand({ getLog: "slowops" })命令查看。
若需满足安全合规要求(如记录所有数据库操作),可启用审计日志:
security:
authorization: enabled # 需先开启权限控制
auditLog:
destination: file # 审计日志输出到文件
format: JSON # 日志格式(JSON/CSV)
path: /var/log/mongodb/audit.json # 审计日志路径
filter: '{ "severity": { "$gte": 1 } }' # 过滤条件(如仅记录严重及以上级别)
启用后,所有数据库操作(如查询、插入、更新)都会被记录到audit.json中。
rsync命令:rsync -av /var/log/mongodb/mongod.log /backup/mongodb/
rsync -av /var/log/mongodb/audit.json /backup/mongodb/
chown和chmod命令限制日志文件的访问权限,确保仅授权用户(如mongodb用户、adm组)能查看:sudo chown mongodb:mongodb /var/log/mongodb/mongod.log
sudo chmod 0640 /var/log/mongodb/mongod.log
以上步骤覆盖了Linux环境下MongoDB日志管理的核心需求,包括配置、轮转、分析、安全及备份,可根据实际场景调整参数(如日志级别、轮转周期、慢查询阈值)。