MongoDB日志如何配置与管理
导读:MongoDB 日志配置与管理 一 基础配置 配置文件通常为 /etc/mongod.conf(或 mongos.conf),通过 systemLog 段进行日志输出与级别控制。常见配置示例:systemLog: destinatio...
MongoDB 日志配置与管理
一 基础配置
- 配置文件通常为 /etc/mongod.conf(或 mongos.conf),通过 systemLog 段进行日志输出与级别控制。常见配置示例:
修改后使用服务管理工具使配置生效,例如:sudo systemctl restart mongod。以上为常见且通用的基础配置项与生效方式。systemLog: destination: file # 输出到文件;也可设为 stdout 或 syslog path: /var/log/mongodb/mongod.log logAppend: true # 追加而非覆盖 verbosity: 1 # 全局日志详细度,0-5,越高越详细 quiet: false
二 日志轮转
- 内置轮转方式
- rename(默认):执行轮转时,MongoDB 会将当前日志文件重命名为带有 UTC 时间戳 的新文件,然后新建同名日志文件继续写入。触发方式:
- 向进程发送 SIGUSR1:kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid)
- 在 mongo shell 执行:db.adminCommand({ logRotate: “server” } )
- reopen:遵循类 Unix 行为,关闭并重新打开同名日志文件。需配合外部先将旧日志重命名。配置方式:在配置中设置 systemLog.logRotate: reopen,然后使用 logrotate 定时重命名并通知 MongoDB 重新打开。
- rename(默认):执行轮转时,MongoDB 会将当前日志文件重命名为带有 UTC 时间戳 的新文件,然后新建同名日志文件继续写入。触发方式:
- 使用 Linux logrotate
- 创建 /etc/logrotate.d/mongodb,示例:
/var/log/mongodb/mongod.log { daily rotate 7 compress delaycompress missingok notifempty create 644 mongodb mongodb sharedscripts postrotate if pgrep mongod > /dev/null; then systemctl kill --signal=SIGUSR1 mongod 2> /dev/null || \ /bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid 2> /dev/null) > /dev/null 2> & 1 fi endscript } - 要点:
- 使用 rename 策略时,无需 postrotate 发送信号;使用 reopen 策略时,postrotate 必须发送 SIGUSR1。
- 副本集需在每个实例上分别执行轮转命令(logRotate 命令不会复制到其他节点)。
- 创建 /etc/logrotate.d/mongodb,示例:
三 日志级别与动态调优
- 全局日志级别:通过配置文件设置 systemLog.verbosity(0-5) 控制整体输出详细度;数值越高,日志越多,磁盘占用越大。
- 运行时动态调优:
- 全局:db.setLogLevel(3)
- 组件级:db.setLogLevel(1, “query”) 动态调优无需重启,便于定位问题后及时恢复为低冗余级别。
四 审计日志与注意事项
- 审计日志轮转:可单独对审计日志执行轮转,例如:db.adminCommand({ logRotate: “audit”, comment: “Rotating audit log” } )。
- 输出到系统日志:将 systemLog.destination 设为 syslog,由系统日志设施统一管理与轮转。
- 安全与权限:确保日志目录与文件权限最小化,仅授权用户可读,例如设置属主为 mongodb:mongodb,权限 644。
五 易混淆概念 存储引擎 Journal 与 服务器日志
- MongoDB 的 Journal(预写日志) 属于存储层,用于崩溃后的数据恢复,不等同于服务器日志。以 WiredTiger 为例:
- 默认启用,Journal 文件位于 –dbpath 指定的 journal 子目录。
- 单个 Journal 文件约 100MB,写满后自动新建;异常关机最多可能丢失不超过 约 128KB 的已提交但尚未落盘的数据(取决于 WiredTiger 日志缓冲与同步策略)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB日志如何配置与管理
本文地址: https://pptw.com/jishu/786793.html
