首页主机资讯MongoDB在Linux中如何监控

MongoDB在Linux中如何监控

时间2026-01-21 22:42:04发布访客分类主机资讯浏览1115
导读: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 mongodhtop(按 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 接近 maxIncomingConnectionsqr/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
Linux如何解决MongoDB内存问题 Golang编译Ubuntu包如何打包

游客 回复需填写必要信息