MongoDB副本集配置系列八:MongoDB监控

时间:2023-03-09 08:02:40
MongoDB副本集配置系列八:MongoDB监控

1:Mongostat

MongoDB2.6版本

MongoDB副本集配置系列八:MongoDB监控

MongoDB3.0版本

MongoDB副本集配置系列八:MongoDB监控

2:db.setProfilingLevel(2):打开profiler

类似于MySQL的slow log

Profiler默认是关闭的,你可以选择全部开启,或者有慢查询的时候开启。

db.setProfilingLevel(level,<slowms>) 0=off 1=slow 2=all

> use test
switched to db test
> db.setProfilingLevel(2)
2015-07-01T00:24:49.770-0700 trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2015-07-01T00:24:49.774-0700 reconnect 127.0.0.1:27017 (127.0.0.1) ok
{ "was" : 0, "slowms" : 100, "ok" : 1 }
> db.getProfilingLevel()
2
> db.system.profile.find().sort({$natural:-1})
  • ts:时间戳
  • info:具体的操作
  • millis:操作所花时间,毫秒

3:--httpinterface --rest:打开Web控制台

如果需要打开web控制台的话,需要在mongod启动的时候加上--httpinterface --rest

MongoDB副本集配置系列八:MongoDB监控

4 db.stats():获取当前数据库信息

> db.stats()
{
"db" : "test",
"collections" : 6,
"objects" : 2309992,
"avgObjSize" : 48.00180260364538,
"dataSize" : 110883780,
"storageSize" : 198164480,
"numExtents" : 27,
"indexes" : 3,
"indexSize" : 74990272,
"fileSize" : 469762048,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1
}

  

5:db.serverStatus():获取服务器当前的状态信息

> db.serverStatus()
{
"host" : "localhost.localdomain",
"version" : "2.6.9",
"process" : "mongod",
"pid" : NumberLong(22871),
"uptime" : 1558,
"uptimeMillis" : NumberLong(1558300),
"uptimeEstimate" : 1428,
"localTime" : ISODate("2015-07-01T07:30:33.497Z"),
"asserts" : {
"regular" : 0,
"warning" : 0,
"msg" : 0,
"user" : 1,
"rollovers" : 0
},
"backgroundFlushing" : {
"flushes" : 25,
"total_ms" : 2,
"average_ms" : 0.08,
"last_ms" : 0,
"last_finished" : ISODate("2015-07-01T07:29:35.233Z")
},
………
}

需要注意两个地方:

connections 当前连接和可用连接数,到2000个连接就属于比较多的(要根据你的机器性能和业务来设定),所以设大了没意义。设个合理值的话,到达这个值mongodb就拒绝新的连接请求,避免被太多的连接拖垮。
indexCounters:btree:misses 索引的不命中数,和hits的比例高就要考虑索引是否正确建立。

  

6:db.currentOp():查看当前正在执行的操作

> db.currentOp()
{ "opid" : "shard3:466404288", "active" : false, "waitingForLock" : false, "op" : "query", "ns" : "sd.usersEmails", "query" : { }, "client_s" : "10.121.13.8:34473", "desc" : "conn" }

如果需要可以kill掉:

db.killOp("shard3:466404288")