TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码
/
注册
用户名
邮箱

MongoDB运行状态查看命令全解析:从基础到高阶监控

2025-06-28
/
0 评论
/
2 阅读
/
正在检测是否收录...
06/28


一、为什么要监控MongoDB运行状态?

在数据库运维中,实时掌握MongoDB的运行状态就像医生需要病人的生命体征数据。通过状态监控我们可以:
- 发现正在阻塞的慢查询
- 识别内存/CPU的异常消耗
- 预判存储空间的增长趋势
- 诊断复制延迟等集群问题

接下来介绍7种核心监控方法,从基础到高阶层层深入。

二、基础监控命令

1. 查看当前活动操作 - db.currentOp()

```javascript
// 查看所有运行中的操作
db.currentOp()

// 筛选耗时超过3秒的操作
db.currentOp({
"secs_running": { "$gt": 3 }
})
```
输出关键字段解析
- opid:操作唯一ID
- secs_running:已运行时长(秒)
- op:操作类型(query/insert等)
- ns:操作的命名空间(库.集合)

2. 数据库健康全景 - db.serverStatus()

javascript db.runCommand({ serverStatus: 1 })
核心指标
json { "connections": { "current": 15 }, // 当前连接数 "mem": { "resident": 2048, // 物理内存占用(MB) "virtual": 4096 // 虚拟内存占用 }, "opcounters": { // 操作计数器 "insert": 1200, "query": 3500 } }

三、进阶监控工具

3. 实时系统监控 - mongostat

bash mongostat --host 127.0.0.1:27017 -u admin -p password
输出示例
insert query update delete conn qrw arw net_in net_out 100 200 50 2 15 0|0 1|0 1m 2m
字段说明
- qrw:查询队列等待数
- net_in:网络入流量

4. 集合级监控 - db.collection.stats()

javascript db.users.stats()
重点关注
- size:文档总大小
- storageSize:预分配存储空间
- indexSize:索引占用空间

四、专业级监控方案

5. 性能分析器 - database profiler

```javascript
// 开启慢查询记录(>100ms)
db.setProfilingLevel(1, 100)

// 查看记录
db.system.profile.find().sort({ ts: -1 }).limit(5)
```

6. 复制集监控

javascript rs.status()
健康检查要点
- members.state:1表示PRIMARY
- optimeDate:最后一次操作时间
- pingMs:节点间延迟

7. 分片集群监控

javascript sh.status() db.adminCommand({ listShards: 1 })

五、监控数据可视化实践

推荐组合方案:
1. Prometheus + Grafana
- 使用mongodb_exporter采集指标
- 配置告警规则

  1. MongoDB Atlas



    • 内置性能监控仪表盘
    • 自动异常检测
  2. Percona PMM



    • 开箱即用的监控方案
    • 查询分析功能

六、常见问题排查案例

案例1:CPU突然飙升
1. db.currentOp()查找长时间运行的操作
2. 检查serverStatus()opcounters是否异常

案例2:连接数暴涨
1. 分析db.serverStatus().connections
2. 检查客户端连接池配置


通过组合使用以上工具,您将构建完整的MongoDB监控体系。记住:预防性监控永远比故障后补救更有效。建议至少每周检查一次关键指标,并在业务高峰前做好容量预估。
```

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/31150/(转载时请注明本文出处及文章链接)

评论 (0)