Debian 上监控 MongoDB 性能指标的实用方案
一 快速排障与命令行工具
- 服务状态与日志
- 查看服务是否运行:sudo systemctl status mongod
- 实时查看日志:tail -f /var/log/mongodb/mongod.log
- 实时性能概览
- 安装客户端工具:sudo apt-get install mongodb-clients
- 运行 mongostat(默认每 2 秒刷新):mongostat --host --port --username --password --authenticationDatabase admin
- 按集合查看读写耗时:mongotop --host --port --username --password --authenticationDatabase admin
- 深入指标
- 在 mongo shell 执行:db.serverStatus(),关注 opcounters、mem、connections、network、asserts、wiredTiger 等关键字段。
二 开启慢查询与日志轮转
- 慢查询阈值(示例:记录超过 100 ms 的操作)
- 编辑 /etc/mongod.conf,在 operationProfiling 下设置:
- slowOpThresholdMs: 100
- mode: slowOp
- 日志轮转(示例:按天轮转,保留 7 天)
- 新建 /etc/logrotate.d/mongodb:
- /var/log/mongodb/mongod.log { daily rotate 7 compress delaycompress missingok notifempty create 640 mongodb adm }
- 使配置生效
- 重启服务:sudo systemctl restart mongod
三 Prometheus Grafana 与 MongoDB Exporter
- 组件与端口
- Prometheus 抓取指标,MongoDB Exporter 默认暴露 9216 端口,Grafana 用于可视化与告警面板。
- 安装与启动
- 安装 Prometheus:sudo apt-get install prometheus
- 启动 Exporter(示例):./mongodb_exporter --mongodb.uri mongodb://localhost:27017
- Prometheus 抓取配置示例
- scrape_configs:
- job_name: ‘mongodb’
static_configs:
- targets: [‘localhost:9216’]
- Grafana
- 添加 Prometheus 数据源,导入 MongoDB 仪表盘(社区有现成面板可直接使用)。
四 企业级与云监控
- MongoDB Ops Manager / Cloud Manager:官方企业级监控与管理平台,提供集群健康、性能、备份与自动化运维能力,适合需要完善运维能力的团队。
- MongoDB Atlas:云托管服务,内置监控、性能建议与告警,适合无自建监控体系的团队。
五 关键指标与告警建议
| 指标 |
含义 |
建议告警阈值示例 |
说明 |
| 操作延迟(opLatencies) |
读写操作延迟 |
持续高于基线或突增 |
结合业务 SLA 设置 |
| 内存使用(mem.resident / mem.virtual) |
物理/虚拟内存占用 |
接近物理内存上限 |
关注 page faults 与磁盘换入换出 |
| 连接数(connections.current / available) |
当前/可用连接 |
接近 maxIncomingConnections |
过高可能触发拒绝连接 |
| 锁争用(globalLock.ratio / collection/DB 锁) |
锁等待比例 |
明显升高 |
结合慢查询与索引优化 |
| 复制延迟(replSetGetStatus.optimeDate 差值) |
主从/分片复制延迟 |
超过业务容忍阈值 |
影响一致性与故障切换 |
| 队列长度(globalLock.currentQueue.total) |
读写排队 |
持续大于 0 且增长 |
表示后端负载瓶颈 |
| 页面错误(extra_info.page_faults) |
磁盘 I/O 压力 |
突增 |
检查工作集是否超出内存 |
| 断言错误(asserts.regular / asserts.warning) |
异常与告警 |
非 0 持续增长 |
需及时排查根因 |
- 实施要点
- 为关键指标设置静态阈值与趋势告警(如环比/同比突增)。
- 结合 mongostat/mongotop、慢查询日志与 serverStatus 做根因定位。
- 控制采集频率与数据保留,平衡监控开销与时效性。