Debian 环境下 MongoDB 日志管理技巧
一 基础配置与日志位置
- 配置文件路径:/etc/mongod.conf,日志段常用参数:
- systemLog.destination: file
- systemLog.path: /var/log/mongodb/mongod.log
- systemLog.logAppend: true
- 可选:systemLog.verbosity(全局日志详细度,数值越高越详细)
- 日志默认目录:/var/log/mongodb/,文件通常为 mongod.log。
- 修改配置后使生效:
- 重启服务:sudo systemctl restart mongod
- 或热加载(若支持):sudo systemctl reload mongod
- 注意:确保运行 mongod 的用户对日志目录与文件具备写权限(常见为 mongodb:mongodb)。
二 日志轮转的正确做法
三 日志级别与组件化控制
- 全局日志级别:范围 0–15(默认 0),动态设置示例:
- 组件级日志:可针对 command、network、query 等组件分别设置级别,便于定位问题且不影响全局输出噪声。
- 查看组件:db.getLogComponents()
- 动态开启某组件 DEBUG(示例):db.setLogLevel(1, “query”)
- 慢查询日志(补充到“日志”维度便于排障):
四 查看与分析日志的实用命令
- 实时查看:sudo tail -f /var/log/mongodb/mongod.log
- 检索关键字:sudo grep “ERROR” /var/log/mongodb/mongod.log
- 分页查看:sudo less /var/log/mongodb/mongod.log
- 若日志为 JSON 格式,可结合 jq 分析:
- 示例:sudo cat /var/log/mongodb/mongod.log | jq ‘.msg’
- 在 Shell 内获取组件日志:
- 获取组件列表:db.getLogComponents()
- 获取某组件日志内容:db.adminCommand({ getLog: “query” })
- 性能辅助工具(非日志,但常与日志联用定位问题):
- mongostat、mongotop 实时监控吞吐、连接与慢操作概况。
五 安全与运维要点
- 权限最小化:日志目录与文件建议属主 mongodb:adm,权限 640,仅管理员可读写,避免泄露敏感信息。
- 审计与合规:涉及敏感数据时,结合 审计日志 与文件系统权限共同治理,避免仅靠应用层日志。
- 容量规划:结合 rotate 7 与 compress 控制保留周期与磁盘占用;高峰期可临时提高 verbosity 或开启更细的组件日志,事后及时恢复,避免日志洪泛。
- 变更留痕:调整 logrotate 或 mongod.conf 后,保留变更记录与回滚方案,变更窗口内密切观察服务与磁盘使用。