1. 配置日志路徑與級別
在Ubuntu上,MongoDB的日志配置主要通過/etc/mongod.conf
文件完成。需修改systemLog
部分的關鍵參數:destination
設置為file
(指定日志輸出到文件),path
定義日志文件路徑(如/var/log/mongodb/mongod.log
),logAppend
設為true
(確保日志追加而非覆蓋),logLevel
調整日志詳細程度(0-5級,0為默認,5為最詳細)。修改后需重啟MongoDB服務(sudo systemctl restart mongod
)使配置生效。
2. 日志輪轉管理
為避免日志文件過大占用磁盤空間,需通過logrotate
工具實現自動輪轉。創建或編輯/etc/logrotate.d/mongodb
文件,添加以下配置:
/var/log/mongodb/mongod.log {
daily # 每天輪轉一次
missingok # 日志文件丟失時不報錯
rotate 7 # 保留最近7個輪轉文件
compress # 壓縮舊日志(如gzip)
notifempty # 日志為空時不輪轉
create 0640 mongodb mongodb # 新日志文件權限與所有者
sharedscripts # 多個服務共享腳本
postrotate # 輪轉后執行的命令
/bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock) 2>/dev/null || true
endscript
}
此配置會自動處理日志輪轉,確保舊日志被壓縮保留,新日志正常寫入。
3. 實時查看與過濾日志
tail -f
命令實時查看日志文件更新,如sudo tail -f /var/log/mongodb/mongod.log
。grep
命令搜索關鍵詞(如錯誤信息),如sudo grep -i "error" /var/log/mongodb/mongod.log
。4. 日志分析與高級工具
jq
工具解析JSON格式日志(MongoDB默認日志格式),如sudo cat /var/log/mongodb/mongod.log | jq '.msg'
,提取日志消息主體。5. 日志備份與權限管理
rsync
或cp
命令定期備份日志文件到遠程存儲或本地備份目錄,如sudo rsync -av /var/log/mongodb/mongod.log /backup/mongodb/
。chown
和chmod
命令限制日志文件訪問權限,確保只有授權用戶(如mongodb
用戶)可讀寫,如sudo chown mongodb:mongodb /var/log/mongodb/mongod.log
、sudo chmod 0640 /var/log/mongodb/mongod.log
。