MongoDB在Linux中的日志管理主要通過修改配置文件實現,配置文件通常位于/etc/mongod.conf(新版本)或/etc/mongodb.conf(舊版本)。需重點配置以下參數:
systemLog.destination設置為file(文件輸出),systemLog.path指定日志文件路徑(如/var/log/mongodb/mongod.log),logAppend設為true確保日志追加而非覆蓋。systemLog.verbosity參數調整日志詳細程度,取值范圍為0(僅致命錯誤)到4(非常詳細),默認1(INFO級別,記錄常規操作與診斷信息)。systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
verbosity: 1 # 可根據需求調整為0-4
修改后需重啟MongoDB服務使配置生效:sudo systemctl restart mongod。
為避免日志文件占用過多磁盤空間,需使用logrotate工具實現自動輪轉。編輯/etc/logrotate.d/mongodb文件,添加以下配置:
/var/log/mongodb/mongod.log {
daily # 每天輪轉一次(可改為weekly/monthly)
rotate 7 # 保留最近7份日志
compress # 壓縮舊日志(gzip格式)
missingok # 日志文件丟失時不報錯
notifempty # 日志為空時不輪轉
create 640 mongodb adm # 新日志文件權限與所有者(mongodb用戶+adm組)
postrotate # 輪轉后發送信號通知MongoDB重新打開日志文件
/bin/kill -SIGUSR1 `cat /var/run/mongodb.pid 2>/dev/null` 2>/dev/null || true
endscript
}
此配置可實現每日切割、保留7天、壓縮舊日志的需求,確保日志文件有序管理。
tail -f命令追蹤日志文件的實時變化,例如:tail -f /var/log/mongodb/mongod.log
可快速定位數據庫運行中的異常(如連接失敗、查詢超時)。grep命令篩選關鍵信息,例如查看所有ERROR日志:grep "ERROR" /var/log/mongodb/mongod.log
less命令分頁瀏覽日志文件(適合查看大文件):less /var/log/mongodb/mongod.log
按空格鍵翻頁,q鍵退出。sudo pip3 install mtools;篩選慢查詢(超過10秒):mlogfilter replsvr.log --slow 10000 | tail -n3;生成查詢時間分布圖:mplotqueries replsvr.log --group namespace --output-file query_time.png。jq '. | select(.attr.durationMillis>=6000)' replsvr.log。rsync命令:rsync -av /var/log/mongodb/mongod.log /backup/mongodb/
chmod與chown命令限制日志文件的訪問權限,確保僅授權用戶(如mongodb用戶、adm組)可查看:chown mongodb:adm /var/log/mongodb/mongod.log
chmod 640 /var/log/mongodb/mongod.log
防止敏感信息泄露。db.adminCommand({logRotate: 1})
mongod.conf中配置operationProfiling部分:operationProfiling:
mode: slowOp # 記錄慢查詢
slowOpThresholdMs: 100 # 慢查詢閾值(毫秒,默認100ms)
慢查詢日志會記錄在mongod.log中,便于優化查詢性能。