温馨提示×

Ubuntu MongoDB如何进行日志分析

小樊
43
2025-12-28 11:31:59
栏目: 云计算

Ubuntu 上 MongoDB 日志分析实操指南

一 定位日志与快速查看

  • 默认日志路径为:/var/log/mongodb/mongod.log;配置文件为:/etc/mongod.conf(如需确认路径,查看其中的 systemLog.path)。常用查看方式:实时跟踪用 tail -f /var/log/mongodb/mongod.log;分页查看用 less /var/log/mongodb/mongod.log;查看末尾 N 行用 tail -n 10 /var/log/mongodb/mongod.log。如为自定义安装,请以配置文件为准。

二 日志结构与关键级别

  • 日志为文本行,典型字段包含:时间戳(精确到毫秒)日志级别组件标识连接/线程标识消息体。常见级别:F(Fatal 致命)E(Error 错误)W(Warning 警告)I(Info 信息);常见组件:NETWORK、STORAGE、REPL、COMMAND 等。示例:
    • 2023-08-20T14:35:22.483+0800 I NETWORK [conn125] end connection 192.168.1.15:54128
    • 2023-08-20T15:12:33.891+0800 I COMMAND [conn142] command db.users … planSummary: COLLSCAN … 分析时优先关注 F/E 级事件,其次对 W 建立基线告警。

三 命令行快速分析命令

  • 实时观察错误与致命告警:
    • grep -E ‘E|F’ /var/log/mongodb/mongod.log | tail -f
  • 按时间窗口筛选(示例:自某日某时起):
    • grep -E ‘E|F’ /var/log/mongodb/mongod.log | awk ‘$1 > “2025-12-28T00:00”’
  • 统计每小时错误量(按日志时间前缀统计):
    • cat /var/log/mongodb/mongod.log | grep -oP ‘\d{4}-\d{2}-\d{2}T\d{2}’ | sort | uniq -c
  • 统计 Top N 来源 IP(连接结束事件):
    • grep ‘end connection’ /var/log/mongodb/mongod.log | awk ‘{print $NF}’ | sort | uniq -c | sort -nr | head
  • 查找全表扫描查询(COLLSCAN 特征):
    • grep ‘planSummary: COLLSCAN’ /var/log/mongodb/mongod.log | head
  • 检查日志增长速度(定位是否需调整轮转策略):
    • du -sh /var/log/mongodb/mongod.log* 以上命令可组合管道,用于定位连接风暴、慢查询、错误突发等常见问题。

四 提升日志粒度与慢查询定位

  • 动态提升日志详细度(无需重启,便于短时排障):
    • 查看组件与级别:use admin; db.getLogComponents()
    • 临时提高全局或组件日志级别:db.adminCommand({setParameter: 1, logLevel: 1})(数值越大越详细,生产谨慎)
  • 慢查询定位与优化:
    • 设置慢查询阈值(示例 100ms):db.adminCommand({setParameter: 1, slowMS: 100})
    • 在日志中检索慢查询与执行计划特征(如 COLLSCAN、IXSCAN、keysExamined/docsExamined),据此添加合适索引并复核执行计划。

五 日志轮转与长期分析方案

  • 使用 logrotate 做按日轮转、压缩与保留(避免磁盘被撑满):
    • 新建配置:/etc/logrotate.d/mongodb
    • 示例内容: /var/log/mongodb/mongod.log { daily rotate 7 compress missingok notifempty create 0640 mongodb mongodb postrotate if [ -f /var/run/mongodb.pid ]; then kill -SIGUSR1 $(cat /var/run/mongodb.pid) fi endscript }
    • 测试配置:logrotate -d /etc/logrotate.d/mongodb;确保权限正确:chown mongodb:mongodb /var/log/mongodb/mongod.log;必要时重启服务:systemctl restart mongod。
  • 长期与集中化分析:
    • 小规模可用 MongoDB Compass 做日志过滤与可视化;中大规模建议接入 ELK Stack(Elasticsearch+Logstash+Kibana)Filebeat/ Fluentd 做采集与可视化仪表盘,便于追踪错误趋势、慢查询与连接异常。

0