监控方案总览
在 Debian 上监控 MongoDB 建议采用“内置工具 + 系统监控 + 时序可视化告警”的组合:先用 mongostat、mongotop 与 db.serverStatus() 做即时诊断,再用 Prometheus + Grafana + mongodb-exporter 做长期采集与可视化,配合 慢查询日志 与 操作系统指标 定位瓶颈与异常。
快速上手 内置工具
- 安装客户端工具:sudo apt-get update && sudo apt-get install -y mongodb-clients。
- 实时概览:运行 mongostat --host 127.0.0.1:27017 -u -p --authenticationDatabase admin,关注 insert/query/update/delete、connections、qr/qw、faults 等列,快速判断负载与队列。
- 按集合耗时:运行 mongotop --host 127.0.0.1:27017 -u -p --authenticationDatabase admin,识别读写热点集合。
- 深入状态:mongo shell 执行 db.runCommand({ serverStatus: 1 }),查看 mem、connections、opcounters、wiredTiger、metrics 等章节获取细粒度指标。
- 慢查询定位:在 /etc/mongod.conf 开启性能分析(示例阈值 100ms)以记录慢操作:
operationProfiling: { slowOpThresholdMs: 100, mode: slowOp }
重启后,慢操作会进入日志,便于用 explain(“executionStats”) 分析是否出现 COLLSCAN、扫描文档过多等问题。
长期监控与告警 Prometheus Grafana
- 组件与端口:部署 Prometheus(默认 9090)、Grafana(默认 3000)、mongodb-exporter(常见 9216)。
- 启动 Exporter:例如 ./mongodb_exporter --mongodb.uri mongodb://localhost:27017(生产环境请使用具备只读权限的账号)。
- 配置抓取:在 prometheus.yml 增加作业:
scrape_configs:
- job_name: ‘mongodb’
static_configs:
- targets: [‘<exporter_host>:9216’]
- 可视化与告警:Grafana 添加 Prometheus 数据源并导入 MongoDB 仪表盘;Prometheus 配置 Alertmanager 规则,示例:
groups:
- name: mongodb
rules:
- alert: HighConnectionCount
expr: rate(mongodb_ss_connections[1m]) > 1000
for: 10m
labels: { severity: warning }
annotations:
summary: “High connection count on {{ $labels.instance }}”
description: “Connection count is above 1000 for more than 10 minutes.”。
系统层面与日志
- 资源监控:使用 top/htop、vmstat、iostat -x 1、netstat/ss -s 观察 CPU、内存、磁盘 IO、网络 与 连接 是否成为瓶颈。
- 日志与轮转:确保 /var/log/mongodb/mongod.log 正常输出并配置 logrotate(如按日轮转、保留 7 天),避免磁盘被日志占满。
- 综合观测:结合应用日志与 MongoDB 日志,交叉验证错误、慢查询与重启事件,形成完整的故障时间线。
关键指标与优化方向
| 维度 |
关键指标 |
常用工具 |
优化建议 |
| 资源使用 |
CPU、内存、磁盘 IO、网络 |
top/htop、vmstat、iostat、ss |
优先使用 SSD、优化数据模型与索引、合理 WiredTiger 缓存、必要时扩容 |
| 数据库操作 |
opcounters(insert/query/update/delete)、qr/qw、active/available |
mongostat、serverStatus |
降低锁竞争、优化慢查询、减少返回字段、批量写入 |
| 连接 |
connections.current/available、连接使用率 |
mongostat、serverStatus |
控制应用连接池、复用连接、排查连接泄漏 |
| 慢查询 |
executionTimeMillis、totalDocsExamined、COLLSCAN |
慢查询日志、explain |
建立合适索引、改写查询、避免全表扫描 |
| 存储引擎 |
wiredTiger.cache.*、checkpoint、读写并发 |
serverStatus |
监控缓存命中率、检查点频率与落盘延迟,结合压缩与 RAID10 优化 IO |
| 上述指标与手段可帮助持续评估健康度并指导优化方向。 |
|
|
|