MongoDB 在 Debian 上的日志管理技巧

一、配置日志路径与级别

  • 修改配置文件:编辑 /etc/mongod.conf,设置 systemLog.path(如 /var/log/mongodb/mongod.log)、logAppend(追加模式)、verbosity(日志级别,0-5,0为默认)。
  • 动态调整级别:通过 mongo shell 执行 db.setLogLevel(, ),如 db.setLogLevel(1, "query") 控制查询组件日志详细程度。

二、日志轮转管理

  • 使用 logrotate
    • 安装工具:sudo apt-get install logrotate
    • 创建配置文件 /etc/logrotate.d/mongodb,示例内容:
      /var/log/mongodb/mongod.log {
          daily
          rotate 7
          compress
          missingok
          notifempty
          create 640 mongodb mongodb
          postrotate
              kill -SIGUSR1 `cat /var/run/mongodb.pid`
          endscript
      }
      

      rotate 7 保留7天日志,compress 压缩旧日志,postrotate 通知 MongoDB 重新打开日志文件)。

三、日志查看与分析

  • 基础查看:用 cattail -fless 命令查看日志文件,如 tail -f /var/log/mongodb/mongod.log
  • 结构化分析
    • 使用 jq 工具解析 JSON 格式日志:cat /var/log/mongodb/mongod.log | jq .
    • 借助 ELK Stack(Elasticsearch+Logstash+Kibana)或 Grafana 进行可视化分析。

四、安全与自动化

  • 权限管理:通过 chownchmod 限制日志文件访问权限,如 sudo chown mongodb:mongodb /var/log/mongodb/mongod.logchmod 640
  • 自动化归档:编写脚本定期将日志移动到归档目录并清理旧文件,例如每月归档一次。

五、监控与故障排查

  • 实时监控:使用 logwatch 或 Prometheus+Grafana 监控日志文件变化及异常。
  • 故障定位:通过日志中的错误代码(如 E11000 重复键错误)、慢查询记录(slowOpThresholdMs 参数)分析问题。

参考来源