温馨提示×

MongoDB在Ubuntu上的日志配置技巧

小樊
36
2025-12-06 20:27:52
栏目: 云计算

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、轮转策略、审计规则后,先在测试环境验证,再滚动发布,并保留回滚方案。

0