MongoDB监控项--如何使用命令得到
1.查看服務器線程運行狀態
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.currentOp());"
當發現secs_running這個字段的值較大并且嚴重阻塞了系統其它線程運行的時候可以先把使用db.killOp(opid)將其kill掉,然后針對這個鏈接執行的query進行優化。
?
在一個正在運行的mongodb服務器內部是有很多鏈接,直接執行db.currentOp()會將所有鏈接的信息都打印出來,這不便于找出有問題的鏈接,所以必須都db.currentOp()輸出的信息做處理.
?
以下是一些信息處理腳本
找出運行時間超過200ms的鏈接信息
mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(function(doc){if(doc.active==true&& doc.secs_running>200){printjson(doc)}});"
如果只需要打出這些鏈接的某個字段可以直接用print
mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(function(doc){if(doc.active==true&& doc.secs_running>200){printjson(doc.opid)}});"
?
打印客戶端信息
mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(
function(opDoc){
if(opDoc.client)
printjson(opDoc.client)
}
);"
?
還可以獲取當前操作中,已停止活動并且操作行為為query的信息
mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(
function(opDoc){//opDoc其實是返回的每個op操作對象
if(!opDoc.active&&opDoc.op=='query')
printjson(opDoc)
}
);"
?
還可以獲取當前操作中,正在進行中并且操作行為為query的信息
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(
function(opDoc){//opDoc其實是返回的每個op操作對象
if(opDoc.active&&opDoc.op=='query')
printjson(opDoc)
}
);"
?
?
查看數據庫payDB的信息:
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.currentOp());"
?
查看連接數
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().connections);"
?
把所有在等待鎖的操作顯示出來:
mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp().inprog.forEach(function(item){if(item.waitingForLock)print(JSON.stringify(item))});"
?
?
鎖信息
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().locks);"
全局鎖信息
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().globalLock
);"
?
內存信息
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().mem
);"
?
索引統計
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().indexCounters);"
?
網絡
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().network);"
?
復制集
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().repl
);"
復制集判斷哪個IP是primary
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().repl
);" | grep primary
?
操作計數器
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().opcounters
);"
?
Journal(dur)持久性
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().dur
);"
?
?
查看oplog信息:
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin local -eval "rs.slaveOk();printjson(db.oplog.rs.stats()
);"
?
這個IP不用修改這是primary
查看master 的oplog元數據信息:
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin admin -eval"rs.slaveOk();printjson(db.printReplicationInfo()
);"
?
修改成任意IP
查看slave的同步狀態-延遲:
$ mongo --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin local -eval"rs.slaveOk();printjson( db.printSlaveReplicationInfo()
);"
?
命令用于追蹤數據庫實例的實時運行狀況
mongostat --host=<IP Addr> ?--port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin
轉載于:https://blog.51cto.com/beigai/1748013
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的MongoDB监控项--如何使用命令得到的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统调用在glibc中的实现
- 下一篇: 使用jQuery设置disabled属性