關於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 of 0 |
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")
上面的兩種方法都是修改,那麼能否初始化是就配置呢?其實是可以的,我們只需要在初始配置檔案中加入相應的引數就可以了,在此不再展開。
本文版權歸作者所有,未經作者同意不得轉載,謝謝配合!!!