Ubuntu 上 MongoDB 日志配置实用技巧
一 基础配置与路径
- 配置文件位置:新版通常为 /etc/mongod.conf,旧版可能为 /etc/mongodb.conf。使用你熟悉的编辑器修改,例如:sudo nano /etc/mongod.conf。
- 常用 systemLog 关键项:
- destination: file(输出到文件;也可用 syslog 或 stderr)
- path: 日志文件路径,常见为 /var/log/mongodb/mongod.log
- logAppend: true(重启后追加而非覆盖)
- 示例片段:
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
- 修改后重启生效:sudo systemctl restart mongod;实时查看:tail -f /var/log/mongodb/mongod.log。
- 默认目录提示:Ubuntu 常见默认日志目录为 /var/log/mongodb/,数据目录为 /var/lib/mongodb/(便于你核对与规划磁盘与权限)。
二 日志级别与组件化调优
- 全局日志级别:范围 0–5(0 默认;1–5 逐步更详细,适合排障)。在配置文件中设置:
systemLog:
verbosity: 2
- 运行时动态调整(无需重启):
- 全局:db.setLogLevel(2)
- 指定组件(例如存储引擎日志):db.setLogLevel(1, “storage.journal”)
- 查看当前级别:db.adminCommand({ getParameter: 1, logLevel: 1 })
- 建议:排障期临时提高,稳定后回落,避免日志量过大。
三 日志轮转与保留策略
- 方式一(推荐)系统级 logrotate:创建 /etc/logrotate.d/mongodb
/var/log/mongodb/mongod.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 mongodb adm
}
说明:按天轮转、保留 7 份、压缩旧日志、空文件不轮转、新文件权限 0640、属主 mongodb:adm。
- 方式二 MongoDB 内置轮转:在配置中启用基于时间/大小的轮转(与 logrotate 二选一或配合使用)。
- 触发与验证:
- 手动测试:sudo logrotate -f /etc/logrotate.conf
- 观察轮转文件与权限是否正确生成。
- 提示:若采用 MongoDB 内置轮转,注意与 systemd 的日志管理策略协调,避免重复或冲突。
四 慢查询与审计日志
- 慢查询日志(定位性能瓶颈):
operationProfiling:
slowOpThresholdMs: 100 # 单位毫秒,可按需调整
- 审计日志(合规与追踪):
security:
authorization: enabled
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json
filter: ‘{ “severity”: { “$gte”: 1 } }’
- 应用要点:审计会产生额外 I/O 与存储,建议按需开启并配合合理的保留周期与归档策略。
五 安全与运维实践
- 权限最小化:确保日志目录与文件仅对 mongodb 用户(及必要的 adm 组)可读写,例如 0640 mongodb adm,防止敏感信息泄露。
- 集中化与可视化:
- 使用 journalctl -u mongod 查看 systemd 服务日志;
- 使用 jq 对 JSON 日志做字段提取与快速检索;
- 多节点/生产环境建议接入 Graylog 等集中式日志平台,便于检索、告警与审计。
- 变更流程:调整 verbosity、轮转策略、审计规则后,先在测试环境验证,再滚动发布,并保留回滚方案。