MongoDB在Ubuntu上的日志管理
导读:MongoDB 在 Ubuntu 的日志管理 一 配置文件与日志路径 配置文件位置:新版通常为 /etc/mongod.conf,旧版可能为 /etc/mongodb.conf。日志相关配置集中在 systemLog 段。 常用参数与示例...
MongoDB 在 Ubuntu 的日志管理
一 配置文件与日志路径
- 配置文件位置:新版通常为 /etc/mongod.conf,旧版可能为 /etc/mongodb.conf。日志相关配置集中在 systemLog 段。
- 常用参数与示例:
- destination: file:日志输出到文件(也可用 syslog)。
- path: /var/log/mongodb/mongod.log:日志文件路径,需确保目录存在且 mongodb 用户可写。
- logAppend: true:以追加模式写入,避免重启覆盖。
- verbosity: 1:全局日志详细度,范围 0–5(数值越大越详细)。
- 示例片段:
systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log verbosity: 1 - 修改后应用:
以上路径、参数与重启方式适用于 Ubuntu 上的常见部署。sudo systemctl restart mongod
二 日志轮转方案
- 推荐方式一(服务不中断):使用 logrotate + copytruncate + SIGUSR1
- 新建配置 /etc/logrotate.d/mongodb:
/var/log/mongodb/mongod.log { daily rotate 7 compress missingok notifempty sharedscripts copytruncate dateext size 200M postrotate /bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock 2> /dev/null) 2> /dev/null || true endscript } - 说明:copytruncate 对仍被进程占用的日志做“复制后截断”,无需重启;SIGUSR1 会让 mongod 重新打开日志文件;按 size 200M 或 daily 触发轮转,保留 7 天并压缩。
- 新建配置 /etc/logrotate.d/mongodb:
- 推荐方式二(简单稳妥):使用 create + systemctl restart
/var/log/mongodb/mongod.log { daily rotate 7 compress missingok notifempty create 0640 mongodb adm postrotate systemctl try-restart mongod > /dev/null 2> & 1 || true endscript }- 说明:轮转后重建日志文件并重启服务,确保文件句柄切换;适合对可用性要求不极致的场景。
- 测试与生效:
以上两种方案与参数在 Ubuntu 上均被广泛采用,按业务对“是否中断”与“运维复杂度”的偏好选择其一。sudo logrotate -v -f /etc/logrotate.d/mongodb
三 查看与分析日志
- 实时查看:
tail -f /var/log/mongodb/mongod.log - 组件与级别:
- 查看组件日志级别:db.getLogComponents()
- 获取全部日志:db.adminCommand({ getLog: 1 } )
- 动态调高全局详细度(示例为 2):db.adminCommand({ setParameter: 1, verbosity: 2 } )
- 慢查询筛选(需 mtools):
sudo pip3 install mtools mlogfilter mongod.log --from "2025-11-19T00:00:00" --to "+1d" --slow 100 | tail -n 20 - JSON 日志解析(若启用 JSON 格式):
以上命令覆盖日常排查、慢查询定位与日志内容解析的高频需求。sudo cat /var/log/mongodb/mongod.log | jq '.msg'
四 常见问题与最佳实践
- 权限与目录:确保 /var/log/mongodb 存在且属主为 mongodb:mongodb,否则日志写入失败。
- 轮转不生效排查:
- 检查 logrotate 配置语法与路径是否匹配实际日志文件。
- 手动强制执行一次:logrotate -v -f /etc/logrotate.d/mongodb。
- 若使用 copytruncate,确认进程收到 SIGUSR1 后能重新打开日志;若使用 restart,确认服务可被 systemctl 正常重启。
- 空间治理:设置合理的 rotate 与 size,并定期清理历史压缩包,避免磁盘被占满。
- 变更记录:调整 verbosity 或输出目标后,务必在变更记录中注明原因与回退方案,便于审计与故障复盘。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Ubuntu上的日志管理
本文地址: https://pptw.com/jishu/751014.html
