,一 简介: 我们来谈谈mongo的监控
二 核心命令
rs.status() 关注复制集群是否健康
db.serverStatus() 关注实例整体性能
三 目标解读
主要来解读下db.serverStatus()
整体
1 db.serverStatus()输出一个json大串,我只需要关注部分的串值就行
2 db.serverStatus()输出的值有2种,一种是纯数字 另一种是NumberLong,需要进行预处理才能输出
目标
mem
1 mem.resident 实例实际占用的内存 单位MB
2 mem.virtual 实例占用的虚拟内存 单位MB 在启用journal日志时,是mmapped的两倍
3 mem.mmapped 实例映射的内存大小,一般为整个数据库的大小,是因为是文件映射的方式、
注意 如果virtual值明显高于mapped值 (如,是其3倍或更高),则表示存在内存泄露
conn
1 connections.current 当前使用的连接数
2 connections.available 剩余的连接数
注意 观察剩余可用的连接数,制定阈值即可
global_lock
1 currentQueue.read 等待的读连接
2 currentQueue.write 等待的写连接
3 currentQueue.total 等到的总连接
注意
globalLock 属于全局性的锁,如果出现问题则大概率是由于并发的问题
opercation
1 opcounters.insert 增
2 opcounters.delete 删
3 opcounters.query 查
4 opcounters.update 改
注意 这个没什么说的,根据这个可以定位性能排查原因,具体影响的操作类型
extra_info
1 page_faults 需要磁盘操作的页面错误总数. 页面错误指的是数据库服务器需要访问内存中不可用数据的操作
注意 零星的数值不代表什么,如果大量的增长,则需要密切注意
sh.status
监控 mongo复制关系,我这里是过滤掉非primary secondary角色进行统计,如果你们有好的思路也可以改进,每个实例都监控,防止单个误判
四总结
1 mongo不同版本输出的东西不是都一样,网上下载的很多都是单实例单端口监控模板,并不适用
2 mongo大体这几项指标我觉得还可以,我觉得监控就是监控自己需要的东西,所以我写了mongo模板
3 mongo集群环境我选择了监控单实例,因为很多只能从实例本身的输出获取