Debian 上 MongoDB 日志管理最佳实践
一 基础配置与目录权限
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
sudo mkdir -p /var/log/mongodb
sudo chown mongodb:mongodb /var/log/mongodb
sudo chmod 0755 /var/log/mongodb
sudo systemctl restart mongod
sudo systemctl status mongod
以上做法确保日志路径统一、权限正确、服务稳定输出到文件。
二 日志轮转策略与实现
/var/log/mongodb/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 mongodb mongodb
size 100M
sharedscripts
postrotate
# 使用内置命令触发日志轮转(推荐,避免信号与PID文件差异)
/usr/bin/mongosh --quiet --eval 'db.adminCommand({ logRotate: 1 })'
endscript
}
要点说明:
sudo logrotate -d /etc/logrotate.d/mongodb # 干跑校验
sudo logrotate -f /etc/logrotate.d/mongodb # 强制执行一次
tail -f /var/log/mongodb/mongod.log # 观察是否继续写入新文件
上述配置与验证流程覆盖日常生产所需的安全、可观测与可回滚要求。
三 日志级别与组件化控制
# 查看组件与当前级别
db.getLogComponents()
# 全局调整(示例:全局为 1)
db.setLogLevel(1, "global")
# 针对组件调整(示例:仅 command 为 2)
db.setLogLevel(2, "command")
systemLog:
verbosity: 1
建议仅在排障期间临时提高级别,恢复后回落到 0–1 的常规范围。
四 日志查看与关键指标
ls -lh /var/log/mongodb/ # 查看日志文件
sudo tail -n 100 /var/log/mongodb/mongod.log # 最近 100 行
sudo tail -f /var/log/mongodb/mongod.log # 实时跟踪
sudo grep -i "ERROR" /var/log/mongodb/*.log # 错误关键字检索
sudo less /var/log/mongodb/mongod.log # 分页查看
# 启动参数方式
mongod --slowms 100
# 或在配置中设置
operationProfiling:
slowOpThresholdMs: 100
mode: slowOp
以上方法覆盖日常巡检、问题定位与性能分析的高频场景。
五 安全与运维要点