温馨提示×

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.confsystemd 服务单元,记得执行 sudo systemctl daemon-reload sudo systemctl restart mongod
    • 动态调级无需重启,但请评估日志量增长对磁盘与性能的影响,调试结束后恢复到合适级别。

0