1. 配置日志路徑與級別
在CentOS上,MongoDB的日志配置主要通過/etc/mongod.conf
文件完成。需設置systemLog
部分的關鍵參數:destination
指定日志輸出目標(推薦file
,即文件存儲);path
定義日志文件路徑(默認/var/log/mongodb/mongod.log
);logAppend
設為true
以追加模式記錄日志(避免重啟時覆蓋舊日志);verbosity
調整日志詳細程度(0為默認,僅記錄信息性消息;1為信息;2為警告;3為錯誤;4為嚴重錯誤)。例如:
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
verbosity: 1
2. 設置日志輪轉
日志輪轉是防止日志文件過大占滿磁盤的核心手段,常用方法有兩種:
/etc/logrotate.d/mongodb
文件,添加以下配置(每日輪轉、保留7天、壓縮舊日志、創建新文件時設置權限):/var/log/mongodb/mongod.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 mongodb adm
}
通過logrotate -f /etc/logrotate.d/mongodb
可手動觸發輪轉。db.adminCommand({logRotate: 1})
強制輪轉當前日志文件。輪轉后,原日志文件會以時間戳重命名(如mongod.log.2025-09-26
),新日志文件重新創建。3. 實時查看與過濾日志
tail -f /var/log/mongodb/mongod.log
命令,可實時監控日志文件的新增內容(按Ctrl+C
停止)。grep
命令篩選所需信息,例如查找錯誤日志:grep "ERROR" /var/log/mongodb/mongod.log
;查找包含“query”的慢查詢日志:grep "query" /var/log/mongodb/mongod.log
。sed
命令提取指定時間范圍的日志,例如查看2025年9月26日的日志:sed -n '/2025-09-26 00:00:00/,/2025-09-26 23:59:59/p' /var/log/mongodb/mongod.log
(需根據實際日志時間格式調整)。4. 清理與歸檔舊日志
find
命令刪除指定天數前的日志文件,例如刪除30天前的日志:find /var/log/mongodb/ -name "mongod.log.*" -mtime +30 -exec rm -f {} \;
。logrotate
的compress
參數自動壓縮舊日志(如gzip
),或手動使用tar
命令歸檔:tar -czvf mongod_$(date +%Y-%m-%d).log.tar.gz /var/log/mongodb/mongod.log.*
。5. 監控日志與性能
mongostat
可實時顯示MongoDB的性能統計信息(如讀寫次數、延遲);mongo --eval 'db.serverStatus()'
可獲取實例的詳細狀態(包括日志緩沖區大小、日志寫入次數)。