Ubuntu 上常用的 MongoDB 监控工具与选型建议
一 工具分类与适用场景
- 内置与命令行:适合快速排障与日常巡检,包含 mongostat、mongotop、db.serverStatus()、db.collection.stats() 等,能即时查看操作吞吐、锁、内存、连接与集合统计。
- 官方可视化与管理:MongoDB Compass(图形化查看性能、索引、查询分析)、MongoDB Cloud Manager(云监控与告警、备份与自动化运维)。
- 自建可观测平台:Prometheus + MongoDB Exporter + Grafana,适合需要长期存储、告警、多实例统一观测与自定义面板的团队。
- 企业级与一体化:Percona Monitoring and Management(PMM),适合需要更全面数据库监控与诊断能力的场景。
二 快速上手命令
- 服务状态:
- 检查服务是否运行:sudo systemctl status mongodb
- 实时性能与负载:
- 操作统计与资源:mongostat
- 按库/集合读写耗时:mongotop
- 关键指标查询:
- 服务器全局状态:mongo --eval ‘db.runCommand({ serverStatus: 1 })’
- 集合统计:mongo --eval ‘db.yourCollection.stats()’
- 日志排查:
- 实时查看日志:sudo tail -f /var/log/mongodb/mongod.log
三 自建可视化监控 Prometheus Grafana MongoDB Exporter
- 组件与端口:
- MongoDB Exporter 默认监听 9333,通过 –mongodb.uri 连接目标实例。
- Prometheus 默认 9090,Grafana 默认 3000。
- 最小配置示例:
- Prometheus 抓取 MongoDB Exporter:
- scrape_configs:
- job_name: ‘mongodb’
static_configs:
- targets: [‘localhost:9333’]
- Grafana:添加数据源 Prometheus(URL: http://localhost:9090),导入 MongoDB 仪表盘,常用查询如 mongodb_up、集合与内存相关指标。
- 快速验证:
- 确认 Exporter 健康:访问 http://localhost:9333/metrics
- 确认 Prometheus Targets 页面状态为 UP
- Grafana 中查看面板数据是否正常刷新
四 工具对比与选型建议
| 工具 |
类型 |
主要优势 |
典型场景 |
| mongostat / mongotop |
内置命令行 |
轻量、即时、零依赖 |
现场排障、临时巡检 |
| MongoDB Compass |
官方 GUI |
可视化性能、索引与查询分析 |
开发/DBA 日常分析 |
| MongoDB Cloud Manager |
官方 SaaS |
监控、告警、备份与自动化 |
云上/多环境统一管理 |
| Prometheus + Exporter + Grafana |
自建可观测 |
时序存储、灵活告警、可定制面板 |
需要长期指标与统一监控 |
| PMM |
企业级 |
一体化监控与诊断 |
多实例/复杂架构与深度诊断 |
五 部署与安全要点
- 启用鉴权与最小权限:为监控账号授予只读诊断权限(如 clusterMonitor),避免使用 root。
- 网络与防火墙:仅开放必要端口(如 27017/9333/9090/3000),限制来源网段。
- 资源与保留:为 Prometheus 配置合理的数据保留与存储,避免磁盘被时序数据占满。
- 高可用:生产环境建议 Prometheus 高可用 与 Grafana 后端数据库 持久化。
- 日志与审计:开启 MongoDB 审计日志(如 enterprise 版本),结合 systemd 与集中日志平台做统一检索与告警。