随着MongoDB中保存的数据越来越多,对MongoDB服务状态的监控也越来越重要,经常关注服务是否健康,才能防止故障以及优化。
1.静态监控db.serverStatus()
使用mongo命令进入shell客户端后输入以下命令可以查看MongoDB服务的状态,有助于故障诊断和性能分析。
db.serverStatus()
此命令的输出信息非常多,看得眼花缭乱,可以根据实际情况有选择地查询监控信息。
- 主机名
db.serverStatus().host
- 锁
db.serverStatus().locks
- 全局锁
db.serverStatus().globalLock
- 内存
db.serverStatus().mem
- 连接数
db.serverStatus().connections
- 额外信息
db.serverStatus().extra_info
- 索引统计
db.serverStatus().indexCounters
- 后台刷新
db.serverStatus().backgroundFlushing
- 游标
db.serverStatus().cursors
- 网络
db.serverStatus().network
- 副本集
db.serverStatus().repl
- 副本集操作计数器
db.serverStatus().opcountersRepl
- 操作计数器
db.serverStatus().opcounters
- 断言
db.serverStatus().asserts
- 回写队列
db.serverStatus().writeBacksQueued
- 持久化
db.serverStatus().dur
- 记录状态
db.serverStatus().recordStats
- 工作集
db.serverStatus({workingSet:1}).workingSet
- 指标
db.serverStatus().metrics
2.动态监控mongostat
MongoDB还提供了动态的监控工具mongostat,mongostat会每秒输出一次serverStatus提供的重要信息。(有点类似Linux系统上的top工具)。
$ mongostat
insert query update delete getmore command % dirty % used flushes vsize res qr|qw ar|aw netIn netOut conn time
*0 *0 *0 *0 0 1|0 0.0 0.0 0 316M 58.0M 0|0 0|0 79b 21.1k 1 2018-05-21T17:03:55+08:00
*0 *0 *0 *0 0 1|0 0.0 0.0 0 316M 58.0M 0|0 0|0 79b 21.1k 1 2018-05-21T17:03:56+08:00
*0 *0 *0 *0 0 1|0 0.0 0.0 0 316M 58.0M 0|0 0|0 79b 21.1k 1 2018-05-21T17:03:57+08:00
*0 *0 *0 *0 0 1|0 0.0 0.0 0 316M 58.0M 0|0 0|0 79b 21.1k 1 2018-05-21T17:03:58+08:00
*0 *0 *0 *0 0 1|0 0.0 0.0 0 316M 58.0M 0|0 0|0 79b 21.1k 1 2018-05-21T17:03:59+08:00
*0 *0 *0 *0 0 1|0 0.0 0.0 0 316M 58.0M 0|0 0|0 79b 21.1k 1 2018-05-21T17:04:00+08:00
3.第三方工具
除了上述方法可以对MongoDB进行监控,还有一些第三方的工具,如:Hyperic、Zabbix、OpenFalcon等,可以根据实际需要选择。