- 首页 >
- 问答 >
-
云计算 >
- Ubuntu MongoDB日志配置有哪些要点
Ubuntu MongoDB日志配置有哪些要点
小樊
31
2025-12-10 19:59:08
Ubuntu 上 MongoDB 日志配置要点
一 配置文件与基础路径
- 配置文件位置:通常为 /etc/mongod.conf;Ubuntu 的官方包安装后由 systemd 托管,服务单元为 mongod.service,并由配置文件中的 ExecStart=/usr/bin/mongod --config /etc/mongod.conf 指定配置路径。默认日志文件为 /var/log/mongodb/mongod.log,默认监听 127.0.0.1:27017。修改配置后需重启服务生效(systemctl restart mongod)。若调整了服务文件或运行用户,需同步校正相关目录权限。
二 systemLog 关键参数
- 建议以 YAML 形式在 systemLog 段落集中配置,常用键如下:
- destination:输出目标,常用 file(文件)或 stderr(标准错误)。
- path:日志文件路径,例如 /var/log/mongodb/mongod.log。
- logAppend:是否追加写入,建议设为 true,避免重启后被覆盖。
- verbosity:全局日志详细度,范围 0–5(0 为默认;1–5 逐步更详细;生产环境通常保持 0,调试时临时提高)。
- 组件级日志:可对 query、storage、replication、sharding、accessControl、ftdc 等设置不同级别,支持精细控制与继承(如设置某组件为 -1 表示继承父级)。示例(YAML):
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
verbosity: 1
component:
query:
verbosity: 2
storage:
journal:
verbosity: 2
以上键名与取值范围以 MongoDB 配置与文档为准;组件级细粒度控制在排查特定子系统问题时非常有效。
三 日志轮转与保留策略
- 内置轮转
- 通过命令在运行时轮转:在 mongosh 中执行
use admin
db.runCommand({ logRotate: 1 })
该命令会重命名当前日志并创建新日志文件,便于归档与清理。
- 外部轮转(推荐与内置配合)
- 使用 logrotate 管理日志生命周期(按天轮转、压缩、保留天数等)。示例配置 /etc/logrotate.d/mongodb:
/var/log/mongodb/mongod.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 mongodb mongodb
postrotate
/usr/bin/pkill -USR1 mongod
endscript
}
- 要点:
- 采用 rename 策略时,配合 postrotate 向 mongod 发送 USR1 信号触发重新打开日志文件,避免日志句柄占用旧文件。
- 合理设置保留天数(如 rotate 7)与压缩,控制磁盘占用。
- 确保新日志文件权限与属主正确(如 mongodb:mongodb),避免启动失败。
四 慢查询与审计日志
- 慢查询日志
- 方式一(推荐):使用数据库分析器(system.profile 集合)
- 开启并设定阈值(毫秒),例如:
db.setProfilingLevel(1, { slowms: 100 }) // 记录超过 100ms 的操作
- 方式二:启动参数 –slowms(在配置文件中对应 operationProfiling.slowOpThresholdMs),例如设为 100 毫秒。
- 审计日志(可选,需企业版或按需启用)
- 在 mongod.conf 中启用审计并写入文件(示例):
security:
authorization: enabled
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json
filter: ‘{ “severity”: { “$gte”: 1 } }’
- 审计会产生额外 I/O 与存储开销,建议结合合规需求与磁盘容量评估开关与过滤规则。
五 运行时调整与验证
- 动态调级
- 全局调级:在 mongosh 中执行
db.setLogLevel(2) // 将默认详细度提升到 2
- 组件调级:
db.setLogLevel(2, “storage.journal”) // 仅提升存储引擎日志
- 查询当前组件级别:
db.getLogComponents()
- 通过 setParameter 也可批量设置组件日志级别(适合脚本化与自动化运维)。
- 验证与排错
- 查看服务状态与日志输出:
sudo systemctl status -l mongod
tail -f /var/log/mongodb/mongod.log
- 若修改了 /etc/mongod.conf 或 systemd 服务单元,记得执行
sudo systemctl daemon-reload
sudo systemctl restart mongod
- 动态调级无需重启,但请评估日志量增长对磁盘与性能的影响,调试结束后恢复到合适级别。