监控 & 问题处理

工具简介

名称 功能描述

mongostat

mongotop

mongoreplay

mongo

基本功能:

  • 执行基本管理命令、查询分析、基本调优、数据库配置

  • 执行 JavaScript

currentOp 查找当前运行的操作,killOp 强制终止当前操作
db.currentOp()

db.killOp(opid)
db.serverStatus()
db.serverStatus()
db.serverStatus().opcounters
db.serverStatus().host
db.serverStatus().version
db.serverStatus().process
db.serverStatus().pid
db.serverStatus().connection

db.serverStatus().locks

db.serverStatus().metrics
db.serverStatus().metrics.document
db.serverStatus().metrics.storage

profiler

打开 profiler 会将信息记录到 system.profiler 中。

compass

mtools

监控关键指标

opcounters(操作计数器)

opcounters(操作计数器)代表的是查询、更新、插入、删除、getmore和其他命令的的数量. 这个指标能够给出数据库工作情况的总体概况。

Note
该值为开机到当前的累计值。
Note
异常报警建议 - 视应用而定,观察应用正常运行时的均值,上浮一定比例。
1. db.serverStatus().opcounters
db.serverStatus().opcounters
{
	"insert" : 0,
	"query" : 1,
	"update" : 0,
	"delete" : 0,
	"getmore" : 0,
	"command" : 12
}
2. 执行 100000 次 insert
use bankdata

var doc = {
   "name": "John Doe",
   "balance": 99.99
}
for (var i = 0; i < 100000; i++) {
   doc.accountNo = i
   db.accounts.insertOne( doc )
}
3. db.serverStatus().opcounters
db.serverStatus().opcounters
{
	"insert" : 100000,
	"query" : 1,
	"update" : 1,
	"delete" : 0,
	"getmore" : 0,
	"command" : 19
}
4. 执行如下代码,进行 query 操作
#!/usr/bin/env python3

from pymongo import MongoClient
import time

def main():
    # Read docs
    read_client = MongoClient()
    db = read_client.get_database("bankdata")
    coll = db.get_collection("accounts")

    while (True):
        cur = coll.find({"accountNo": {"$lt": 100}}).sort("accountNo", -1).limit(10)
        for doc in cur:
            pass
        time.sleep(0.2)


####
# Main
####
if __name__ == '__main__':
    main()
5. db.serverStatus().opcounters
db.serverStatus().opcounters
{
	"insert" : 100000,
	"query" : 12856,
	"update" : 16,
	"delete" : 0,
	"getmore" : 0,
	"command" : 370
}
**
**
**
**
**
**
**

results matching ""

    No results matching ""