1. 配置日志路徑與級別
在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. 實現日志輪轉(避免文件過大)
使用Linux系統自帶的logrotate工具自動化管理日志輪轉,編輯/etc/logrotate.d/mongodb文件,添加以下配置:
/var/log/mongodb/mongod.log {
daily # 每日輪轉
rotate 7 # 保留7個歷史日志文件
compress # 壓縮舊日志(gzip)
missingok # 日志文件丟失時不報錯
notifempty # 日志為空時不輪轉
create 0640 mongodb adm # 新日志文件權限與屬主(需提前創建mongodb用戶和adm組)
sharedscripts # 所有日志輪轉完成后執行postrotate腳本
postrotate
/bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock) # 通知MongoDB重新打開日志文件
endscript
}
配置完成后,logrotate會按規則自動處理日志,無需手動干預。
3. 日志內容查看與實時監控
tail -f命令,如tail -f /var/log/mongodb/mongod.log,可實時查看新增日志條目(適合排查實時問題);head -n 20 /var/log/mongodb/mongod.log(查看前20行)、tail -n 50 /var/log/mongodb/mongod.log(查看后50行);less命令(如less /var/log/mongodb/mongod.log),支持上下翻頁、關鍵字搜索(按/鍵輸入關鍵字)。4. 日志分析與故障排查
grep過濾關鍵信息(如錯誤日志grep "ERROR" /var/log/mongodb/mongod.log)、awk提取字段(如提取時間戳和操作awk '{print $1, $3}' /var/log/mongodb/mongod.log);jq:處理JSON格式日志(如提取慢查詢jq '. | select(.attr.durationMillis >= 6000)' mongod.log);mtools:專為MongoDB日志設計的Python工具集,可實現慢查詢篩選(mlogfilter --slow 60000 replsvr.log)、查詢可視化(mplotqueries --group namespace log.txt);5. 日志安全管理(權限控制)
為防止敏感數據泄露,需限制日志文件的訪問權限:
mongodb用戶,屬組設為adm(或其他運維組):chown mongodb:adm /var/log/mongodb/mongod.log;0640(屬主可讀寫,屬組可讀,其他用戶無權限):chmod 0640 /var/log/mongodb/mongod.log。6. 高級技巧:集中式日志管理
對于多節點MongoDB集群,建議部署集中式日志平臺(如Graylog、ELK Stack),實現日志的統一收集、存儲、檢索和可視化: