- 首页 >
- 问答 >
-
云计算 >
- Linux下MongoDB日志如何管理
Linux下MongoDB日志如何管理
小樊
37
2025-11-14 21:47:26
Linux下MongoDB日志管理
一 基础配置与查看
- 配置文件位置:常见为 /etc/mongod.conf(新版本)或 /etc/mongodb.conf(旧版本)。
- 常用 systemLog 配置示例:
- 输出到文件:
- systemLog:
- destination: file
- path: /var/log/mongodb/mongod.log
- logAppend: true
- 输出到系统日志(syslog):
- systemLog:
- destination: syslog
- syslogFacility: daemon(示例)
- 查看与实时监控:
- 实时查看:tail -f /var/log/mongodb/mongod.log
- 连接相关日志关键词:grep “connection accepted” /var/log/mongodb/mongod.log
- 日志级别与组件:
- 全局详细度:systemLog.verbosity(如 0 默认,1–5 逐步详细;生产建议保持默认)
- 组件级别:component.query.verbosity 等,便于定位问题而不全局放大日志量
二 日志轮转方案
- 内置轮转(推荐优先使用)
- 行为:默认 rename,将当前日志重命名为 --
- T--
时间戳后新建同名日志文件。
- 触发方式:
- 命令行:db.adminCommand({ logRotate: “server” })(仅服务器日志)或 { logRotate: 1 }(同时轮换服务器与审计日志)
- 信号:kill -SIGUSR1 <mongod_pid>
- 配合 Linux logrotate 的两种方式
- reopen 模式(与 logrotate 协同):
- 配置:systemLog.logRotate: reopen,并始终使用 logAppend: true
- logrotate 示例(/etc/logrotate.d/mongodb):
- /var/log/mongodb/mongod.log {
- daily
- rotate 7
- compress
- delaycompress
- missingok
- notifempty
- create 640 mongodb mongodb
- sharedscripts
- postrotate
- /usr/bin/pkill -USR1 mongod
- endscript
- }
- copytruncate 模式(无需信号,简单粗暴):
- 在 logrotate 中使用 copytruncate,直接复制并清空原文件,避免信号与重开文件句柄的问题。
- 选择建议:优先使用内置 rename + SIGUSR1;若已有统一 logrotate 流程,采用 reopen 模式与之集成;无法管理进程信号时再用 copytruncate。
三 慢查询与审计日志
- 慢查询日志
- 阈值:operationProfiling.slowOpThresholdMs(默认 100ms)
- 级别:operationProfiling.slowOpThresholdMs 与 profiling 级别配合,定位长耗时操作。
- 审计日志(可选)
- 启用示例:
- security:
- auditLog:
- destination: file
- format: JSON
- path: /var/log/mongodb/audit.json
- filter: ‘{ “severity”: { “$gte”: 1 } }’
- 轮换:与服务器日志一致,使用 logRotate 命令或 SIGUSR1;需启用审计功能才可轮换审计日志。
四 日志分析与告警
- 命令行快速筛选
- 错误关键字:grep -i “error” /var/log/mongodb/mongod.log
- 慢查询:grep “COMMAND” /var/log/mongodb/mongod.log | awk ‘$NF > 100 {print}’(示例阈值 100ms)
- 可视化与统计工具
- mtools:pip3 install mtools
- mloginfo --slow /var/log/mongodb/mongod.log
- mplotqueries /var/log/mongodb/mongod.log --type scatter
- 集中化与监控
- 将日志接入 ELK(Elasticsearch + Logstash + Kibana)做检索、可视化与告警。
- 磁盘空间监控:df -h 与阈值告警脚本,避免因日志占满导致实例异常。
五 生产实践清单
- 权限与路径:日志目录与文件属主应为 mongodb:mongodb,权限如 640;路径使用绝对路径并预留磁盘。
- 策略选择:默认使用内置 rename + SIGUSR1;统一运维平台下采用 reopen + logrotate;无法发信号时用 copytruncate。
- 保留周期:按合规与容量规划设置 rotate(如 7 天),并启用 compress 与 delaycompress。
- 级别控制:生产保持 verbosity 0,必要时临时提高并同步监控磁盘。
- 分离 I/O:将日志置于独立分区(如 /log/mongodb),避免与数据文件争用。
- 审计与合规:启用审计时同步规划审计日志的保留、保护与轮换策略。