MongoDB在Linux中如何监控
导读:MongoDB 在 Linux 的监控实践 一 内置工具与快速检查 使用 mongostat 实时查看关键吞吐与连接: 命令:mongostat --host <hostname> --port <port> -...
MongoDB 在 Linux 的监控实践
一 内置工具与快速检查
- 使用 mongostat 实时查看关键吞吐与连接:
- 命令:
mongostat --host < hostname> --port < port> --username < user> --password < pass> --authenticationDatabase admin - 关注字段:insert/query/update/delete(操作速率)、connections(连接数)、qr/qw(队列读写)、faults(缺页/换页)、mem.resident(常驻内存)。
- 命令:
- 使用 mongotop 跟踪各库的读写耗时:
- 命令:
mongotop --host < hostname> --port < port> --username < user> --password < pass> --authenticationDatabase admin - 关注:按数据库或集合的 read/write 时间占比,定位热点库/集合。
- 命令:
- 使用 mongo shell 获取详细状态与库级统计:
- 连接:
mongo --host < hostname> --port < port> -u < user> -p < pass> --authenticationDatabase admin - 常用命令:
db.serverStatus():返回包含 connections、mem、network、opcounters、wiredTiger 等的完整状态文档。db.stats():库级统计(如 collections、indexes、dataSize、storageSize)。
- 连接:
二 系统层面的资源监控
- 进程与资源:
top -u mongod、htop(按 CPU、内存 排序,观察 mongod 进程是否异常)。 - 磁盘与 I/O:
iostat -x 1(关注 await、svctm、util,判断磁盘是否成为瓶颈)。 - 虚拟内存与调度:
vmstat 1(关注 si/so(换入/换出)、us/sy/id/wa)。 - 综合建议:将 mongostat/mongotop 与系统工具结合,先排除系统资源瓶颈,再回到数据库内部指标定位。
三 第三方监控与可视化
- 官方与管理工具:
- MongoDB Compass:图形化查看 serverStatus 指标、执行计划与索引建议。
- MongoDB Ops Manager(企业版):提供 监控、备份、自动化 与更完善的告警能力。
- 开源与 SaaS:
- Zabbix、Nagios:通过插件采集 MongoDB 指标并设置阈值告警。
- Prometheus + MongoDB Exporter + Grafana:拉取指标并构建可视化看板,适合云原生与自建监控体系。
- Datadog、New Relic:托管式监控,开箱即用的 MongoDB 集成 与告警。
四 告警与持续记录
- 简单脚本采集与落盘:
- 示例:
mongo --eval "db.runCommand({ serverStatus: 1 } )" > > mongodb_monitor.log 2> & 1 - 定时采集:用 Cron(如
* * * * * /path/script.sh)做周期性记录,便于回溯。
- 示例:
- 告警思路:
- 在脚本中解析关键字段(如 connections、opcounters、mem.resident、queues),当超过阈值时触发 邮件/企业微信/钉钉/Slack 通知。
- 结合 Zabbix/Nagios/Prometheus Alertmanager 配置规则,实现 持续监控 + 阈值告警。
五 关键指标与排障路径
- 连接与队列:
- 关注 connections 接近 maxIncomingConnections 或 qr/qw 持续升高,表示请求堆积,需排查慢查询、索引缺失或资源不足。
- 操作与延迟:
- 通过 mongostat 观察 insert/query/update/delete 的突增;结合 mongotop 定位到具体库/集合的热点操作。
- 内存与页面错误:
- mem.resident 与系统内存对比,若 faults 频繁,可能存在内存不足或工作集过大,需优化索引/查询或扩容内存。
- 存储与 I/O:
- 用 iostat 检查 await、util;高 util 或高延迟常见于磁盘瓶颈或 WiredTiger 检查点/压缩压力,考虑更快磁盘或调整 checkpoint、压缩策略。
- 快速排障顺序:
- 先看系统资源(CPU/内存/磁盘 I/O)→ 再看 mongostat/mongotop 的热点与队列 → 回到 db.serverStatus() 的 opcounters、network、wiredTiger 细节定位根因。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Linux中如何监控
本文地址: https://pptw.com/jishu/789192.html
