MongoDB資料庫的日誌檔案深入分析
前言
日誌是MongoDB中一個非常重要的功能,他保證了資料庫伺服器在意外斷電、自然災害下資料的完整性 。MongoDB日誌記錄了資料庫例項的健康狀態、語句的執行狀況、資源的消耗情況,所以日誌對於分析資料庫服務和效能優化很有幫助。
因此,很有必要花費一些時間來學習解析一下MongoDB的日誌檔案。
下面話不多說了,來一起看看詳細的介紹吧。
日誌資訊的格式
<日誌時間> <嚴重級別> <資訊所屬分類> [<內容>] <訊息>
例如 :
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017
日誌資訊嚴重級別
級別 |
級別描述 |
F |
Fatal |
E |
Error |
W |
Warning |
I |
Informational,for Verbosity Level of0 |
D |
Debug,for All Verbosity Levels >0 |
資訊所屬分類
日誌分類 |
英文 |
分類描述 |
登入資訊 |
ACCESS |
登入訪問相關的資訊,例如登入驗證情況。 |
命令資訊 |
COMMAND |
資料庫執行命令相關資訊,例如,查詢。 |
控制管理資訊 |
CONTROL |
記錄控制管理相關的資訊,例如資料庫初始化。 |
FTDC資訊 |
FTDC(full-time diagnostic data ) |
全程檢測資料資訊,例如Server的狀態統計資訊。 |
索引資訊 |
INDEX |
索引相關資訊,例如索引的建立過程資訊。 |
網路資訊 |
NETWORK |
網路相關資訊,例如網路連線資訊。 |
查詢資訊 |
QUERY |
查詢相關資訊,例如查詢計劃資訊。 |
副本集資訊 |
REPL |
副本集相關資訊,例如副本集初始過程、心跳、回滾等資訊 |
分片資訊 |
SHARDING |
分片相關資訊,例如mongos的啟動資訊 |
儲存資訊 |
STORAGE |
儲存相關資訊,例如將 storage 層的資料刷入磁碟的資訊。 |
還原資訊 |
RECOVERY |
還原活動相關的資訊 |
日誌資訊 |
JOURNAL |
日誌相關的資訊 |
寫操作資訊 |
WRITE |
寫操作相關的資訊,例如更新(update)的命令。 |
查詢日誌詳細等級
MongoDB將日誌詳細等級劃分為0~5
1. 0 是MongoDB日誌的的預設級別,會包含 Informational 類資訊。
2. 1~5 是除錯級別,會記錄客戶端所有的完整請求
查詢日誌詳細等級的命令。
db.getLogComponents()
修改日誌詳細等級
修改日誌詳細等級的途徑有兩種。
第一種 設定logComponentVerbosity 引數來進行修改。
另外還需說明的一點是日誌分類還可以進一步細化,
例如:將systemLog 整體設定為1,其中 query 子項 和storage子項 設定為2,而子項storage的子項設定journal再設定為1。
修改的具體命令為:
db.adminCommand( { setParameter: 1,logComponentVerbosity: { verbosity: 1,query: { verbosity: 2 },storage: { verbosity: 2,journal: { verbosity: 1 } } } } )
第二種方法,通過 db.setLogLevel()
進行修改。
此種方法多是針對單一的日誌類別進行修改。另外還有一點需要特別指出,我們有時候會通過db.getLogComponents()
看到級別日誌級別為-1,其實-1,代表和其父類別的等級一樣。
例如,我們將query類別的日誌的詳細級別設定為父類( systemLog)的日誌詳細級別,可以執行以下命令:
db.setLogLevel(-1,"query")
上面的兩種方法都是修改,那麼能否初始化是就配置呢?其實是可以的,我們只需要在初始配置檔案中加入相應的引數就可以了,在此不再展開。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支援。