CentOS MongoDB日志如何管理
导读:CentOS 上 MongoDB 日志管理实操指南 一 基础配置与路径 配置文件位置:/etc/mongod.conf。常用系统日志参数: systemLog.destination: file systemLog.path: /var...
CentOS 上 MongoDB 日志管理实操指南
一 基础配置与路径
- 配置文件位置:/etc/mongod.conf。常用系统日志参数:
- systemLog.destination: file
- systemLog.path: /var/log/mongodb/mongod.log
- systemLog.logAppend: true
- systemLog.verbosity: 0(生产建议保持默认,调试可临时提高)
- 默认目录与权限:YUM 安装时日志默认在 /var/log/mongodb,数据在 /var/lib/mongo,服务以 mongod 用户运行;如自定义路径,需同步调整目录属主属组为 mongod:mongodb,否则可能因权限导致写入失败。
二 日志轮转方案
- 方式一 MongoDB 内置轮转(推荐)
- 手动触发:
- Shell:kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock)
- Mongo Shell:use admin → db.runCommand({ logRotate: 1 } )
- 自动触发:在 /etc/mongod.conf 设置
- systemLog: logRotate: rename,logAppend: true
- 特点:MongoDB 会将当前日志重命名为带 UTC 时间戳 的文件(如 mongod.log.2025-07-23T08-31-00),并重新打开新的 mongod.log 继续写入。
- 手动触发:
- 方式二 使用 logrotate(与内置 rename 二选一)
- 新建配置:/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 也可实现无缝轮转,但在极少数高并发写入场景存在极小概率丢日志风险;如追求稳妥,优先使用 rename + USR1 或 logrotate 的 create + postrotate 发送 USR1。
- 测试:logrotate -d /etc/logrotate.d/mongodb(干跑),logrotate -v /etc/logrotate.d/mongodb(实际执行)。
- 新建配置:/etc/logrotate.d/mongodb
- 方式三 定时脚本切割(兼容性方案)
- 思路:脚本读取 mongod.lock 获取 PID,执行 kill -SIGUSR1 切割;配合 find 删除 N 天前旧日志;用 cron 每日执行。
三 慢查询与诊断日志
- 慢查询日志
- 阈值:通过 –slowms 或 db.setProfilingLevel() 设置(默认 100ms)。
- 存储位置:
- 表级:写入 system.profile 集合(建议仅对特定库或集合开启,避免性能开销)。
- 日志文件:当 slowOpThreshold 触发时,相关事件也会出现在 mongod.log(取决于日志级别与组件日志设置)。
- 组件日志级别
- 全局:systemLog.verbosity(0-5)
- 组件:例如
systemLog: verbosity: 0 component: query: verbosity: 1
- 诊断与可视化
- 工具:mtools(如 mloginfo、mplotqueries)用于慢查询统计与可视化分析,便于定位性能瓶颈。
四 监控 分析与安全
- 实时监控
- 实时查看:tail -f /var/log/mongodb/mongod.log
- 运行状态:mongostat、mongotop 观察 QPS、连接、锁、时延等指标;必要时结合 db.serverStatus() 深入排查。
- 日志分析
- 文本处理:grep/awk 提取错误与慢查询片段(如 grep -i “error”、按执行时间过滤)。
- 集中化:使用 Filebeat/Logstash → Elasticsearch → Kibana(ELK)或 Fluentd 做收集、解析与可视化,便于告警与审计。
- 安全与容量
- 权限最小化:确保 /var/log/mongodb 仅对 mongod 可写,必要时限制其他用户访问。
- 磁盘与 I/O:将日志置于独立分区,监控 df -h 使用率;压缩可节省约 70%-90% 空间;定期清理过期归档。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS MongoDB日志如何管理
本文地址: https://pptw.com/jishu/785672.html
