MongoDB日志分析在CentOS上如何进行
导读:在 CentOS 上进行 MongoDB 日志分析的实用流程 一 准备与定位日志 确认日志路径与配置:MongoDB 默认日志位于 /var/log/mongodb/mongod.log,配置文件为 /etc/mongod.conf。常见...
在 CentOS 上进行 MongoDB 日志分析的实用流程
一 准备与定位日志
- 确认日志路径与配置:MongoDB 默认日志位于 /var/log/mongodb/mongod.log,配置文件为 /etc/mongod.conf。常见配置项包括:
- systemLog.destination: file
- systemLog.path: /var/log/mongodb/mongod.log
- systemLog.logAppend: true
- systemLog.verbosity: 1(数值越大越详细)
- 实时查看与基础过滤:
- 实时跟踪:tail -f /var/log/mongodb/mongod.log
- 关键字检索:grep -i “error|exception” /var/log/mongodb/mongod.log
- 统计错误码出现次数:awk ‘/error code 11000/ { count++} END { print “dup_key_count=” count} ’ /var/log/mongodb/mongod.log
- 动态调节日志级别(连接 mongo shell 后):
- 查看组件与级别:db.getLogComponents()
- 设置全局与组件级别:db.adminCommand({ setLogLevel: 1, logComponentVerbosity: { verbosity: 1, query: { verbosity: 2 } } } )
二 使用 mtools 深入分析慢查询与异常模式
- 安装 mtools(建议 Python 3.6+):
- yum 安装基础依赖:yum install -y python3 python3-devel
- pip 安装:pip3 install mtools
- 常用分析命令:
- 概览日志:mloginfo /var/log/mongodb/mongod.log
- 按时间/阈值筛选慢查询(示例:最近 8 小时、慢于 60s):mlogfilter mongod.log --from “8h” --slow 60000
- 按命名空间/操作聚合统计:mlogfilter mongod.log --group namespace --sort count
- 可视化查询时间分布:mplotqueries mongod.log --group namespace --output-file ns_scan.png
- 生成交互式 HTML 时间线:mlogvis mongod.log
- 提示:mtools 适合离线分析历史日志;如需定位“正在发生”的问题,可先用 tail/grep 快速筛查,再用 mtools 对归档日志做深度分析
三 使用数据库内置诊断定位慢操作
- 开启并调整慢查询阈值(示例:记录超过 1000ms 的命令):
- 查看状态:db.getProfilingStatus()
- 设置级别与阈值:db.setProfilingLevel(1, 1000)
- 在日志中配合过滤慢操作:
- mlogfilter mongod.log --slow 1000 --namespace “mydb.mycol”
- 结合日志与 profile 可以快速识别:
- 高频慢操作、缺失索引导致的 COLLSCAN、超大聚合/排序等性能瓶颈
四 集中化日志与可视化
- 轻量采集与检索:
- Filebeat → Elasticsearch → Kibana:Filebeat 读取 /var/log/mongodb/mongod.log,ES 存储,Kibana 做可视化与告警
- 全链路平台:
- ELK Stack(Elasticsearch + Logstash + Kibana):Logstash 负责解析与丰富(如提取耗时、namespace、command 等字段),ES 检索,Kibana 展示趋势与热点
- 适用场景:
- 多实例/分片集群、跨机房部署、需要长期留存与统一检索/告警的生产环境
五 日志轮转与日常维护
- 使用 logrotate 管理日志大小与保留期(创建 /etc/logrotate.d/mongodb):
- /var/log/mongodb/mongod.log {
- daily
- rotate 7
- compress
- missingok
- notifempty
- sharedscripts
- copytruncate
- dateext
- size 200M
- postrotate
- /bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid 2> /dev/null) 2> /dev/null || true
- endscript }
- /var/log/mongodb/mongod.log {
- 关键点:
- 使用 copytruncate 避免重启 mongod;确保 pid 文件路径与实际一致(常见为 /var/run/mongodb/mongod.pid 或 /var/log/mongodb/mongod.lock)
- 合理设置保留天数与大小阈值,防止磁盘被日志占满
- 日常巡检命令:
- 实时关注错误与重启:tail -f /var/log/mongodb/mongod.log | egrep “ERROR|Exception|FATAL|replSet [A-Z]+”
- 统计当日慢查询数量:mlogfilter mongod.log --from “24h” --slow 100 | wc -l
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB日志分析在CentOS上如何进行
本文地址: https://pptw.com/jishu/769853.html
