Debian环境下MongoDB日志管理实用技巧
日志的基础管理始于配置文件/etc/mongod.conf。通过调整systemLog参数,可自定义日志的存储位置、追加模式及详细程度:
path为具体路径(如/var/log/mongodb/mongod.log),指定日志文件的存储位置;logAppend设为true,确保MongoDB重启后日志内容不会被覆盖,保留历史记录;verbosity调整详细程度(0-5级,0仅记录警告与错误,5记录所有操作细节),满足不同场景的监控需求。sudo systemctl restart mongod)使变更生效。为防止日志文件无限增长占用磁盘空间,需使用logrotate工具实现自动轮转。创建或编辑/etc/logrotate.d/mongodb配置文件,推荐以下规则:
/var/log/mongodb/mongod.log { daily # 每天轮转一次(也可根据需求改为size 200M,达到200MB时轮转) rotate 7 # 保留最近7个轮转日志文件 compress # 使用gzip压缩旧日志(节省空间) missingok # 若日志文件丢失,不报错继续执行 notifempty # 若日志文件为空,不进行轮转 create 0640 mongodb mongodb # 创建新日志文件,权限0640,属主/属组为mongodb postrotate # 轮转后执行的脚本 /bin/kill -SIGUSR1 `cat /var/log/mongodb/mongod.lock` 2>/dev/null || true endscript } 此配置可实现日志的自动管理,确保日志文件始终处于可控范围。可通过sudo logrotate -f /etc/logrotate.d/mongodb手动触发轮转测试。
tail命令实时查看最新日志(sudo tail -f /var/log/mongodb/mongod.log),或用cat、less查看完整内容;jq工具提取关键字段(如sudo cat /var/log/mongodb/mongod.log | jq '.msg'),快速定位错误或警告信息;grep筛选特定内容(如sudo grep "error" /var/log/mongodb/mongod.log),聚焦问题日志。若需立即轮转日志(如日志文件即将占满磁盘),可通过MongoDB Shell执行命令:
use admin db.runCommand({ logRotate: 1 }) 此命令会通知MongoDB进程重新打开日志文件,生成新的日志文件,无需重启服务。
/var/log/mongodb/archive/),并添加时间戳(如mongod_2025-10-27.log)。示例脚本:#!/bin/bash LOG_DIR="/var/log/mongodb" ARCHIVE_DIR="$LOG_DIR/archive" LOG_FILE="$LOG_DIR/mongod.log" if [ ! -d "$ARCHIVE_DIR" ]; then mkdir -p "$ARCHIVE_DIR" fi if [ -f "$LOG_FILE" ]; then mv "$LOG_FILE" "$ARCHIVE_DIR/mongod_$(date +%Y-%m-%d).log" fi find "$ARCHIVE_DIR" -type f -mtime +30 -delete),避免归档日志占用过多空间。df -h命令定期检查/var/log/mongodb/目录所在磁盘的使用情况,设置阈值(如80%)触发告警;du -sh /var/log/mongodb/mongod.log查看当前日志文件大小,若接近预设阈值(如200MB),及时触发轮转或扩容;