温馨提示×

MongoDB在CentOS上的监控如何实现

小樊
33
2025-11-27 18:47:05
栏目: 云计算

MongoDB在CentOS上的监控实现

一 快速上手 内置工具与Shell

  • 服务状态与健康检查
    • 查看服务状态:sudo systemctl status mongod
    • 快速连通性/状态:执行 mongo --eval ‘db.runCommand({ serverStatus: 1 })’,可获取包含版本、运行时间、连接数、缓存、操作计数等的详细JSON。
  • 实时性能与负载
    • mongostat:实时展示插入/查询/更新/删除等计数器与资源使用,便于定位吞吐与锁竞争。
    • mongotop:按集合展示读写耗时占比,快速识别热点集合。
  • 慢查询与执行分析
    • 开启并查看Profiler(如设置db.setProfilingLevel(1, {slowms: 100})),结合日志定位慢查询与执行计划。
  • 日志排查
    • 默认日志路径:/var/log/mongodb/mongod.log,使用 tail -f /var/log/mongodb/mongod.log 实时跟踪错误与告警。

二 可视化与长期监控 Prometheus Grafana MongoDB Exporter

  • 组件与数据流
    • MongoDB Exporter 采集数据库指标 → Prometheus 抓取与存储 → Grafana 可视化与告警。
  • 部署步骤(示例)
    • 启动 Exporter(请替换连接串与认证库):
      • ./mongodb_exporter --mongodb.uri=“mongodb://:@:/admin”
    • 配置 Prometheus(prometheus.yml):
      • scrape_configs:
        • job_name: ‘mongodb’ static_configs:
          • targets: [‘:9216’]
    • 启动 Prometheus:
      • ./prometheus --config.file=prometheus.yml
    • 安装并启动 Grafana(CentOS 7/8 可用 yum):
      • sudo yum install -y @grafana
      • sudo systemctl daemon-reload && sudo systemctl start grafana-server && sudo systemctl enable grafana-server
    • Grafana 配置
      • 访问 http://:3000,添加数据源 Prometheus(URL: http://:9090)
      • 导入 MongoDB 仪表盘(如社区仪表盘 ID: mongodb-dashboard),完成可视化。

三 企业级与替代方案

  • Zabbix:通过模板或自定义脚本采集 mongostat/mongotop 输出与系统指标,适合已有 Zabbix 体系的团队。

  • Percona Monitoring and Management(PMM):开源的一体化监控与诊断平台,覆盖 MongoDB 性能、慢查询分析与优化建议。

  • MongoDB Ops Manager / Atlas:官方企业级监控与管理(含性能监控、备份、告警等),适合需要合规与 SLA 管理的生产环境。

四 系统层面监控与日志联动

  • 资源与磁盘
    • top/htop:观察 CPU/内存 消耗,定位 mongod 进程是否受限。
    • iostat -x 1:查看 磁盘 I/O 队列与利用率,排查慢盘与 I/O 瓶颈。
    • vmstat 1:关注 swap、上下文切换、中断 等系统层面异常。
  • 日志与审计
    • 持续 tail -f /var/log/mongodb/mongod.log,结合 Profiler 结果,闭环慢查询与异常行为的定位与优化。

五 建议的告警阈值与落地实践

  • 关键告警建议(按业务调整阈值与持续时间)
    • 复制集健康:主节点不可用、复制滞后(如 > 10s)持续 1–2 个采集周期。
    • 连接数:当前连接数接近 maxIncomingConnections80%
    • 操作延迟:慢查询比例或平均操作耗时突增(如 > 50% 对比基线)。
    • 资源瓶颈:CPU 持续 > 80%、可用内存低、磁盘 util > 80%await 明显升高。
    • 存储:数据目录所在磁盘 可用空间 < 10%
  • 落地步骤
    • Prometheus 中定义 Recording Rules/Alert Rules,基于 MongoDB Exporter 指标(如连接数、操作速率、复制滞后、WiredTiger 缓存命中率等)。
    • Grafana 配置通知渠道(如 Email/Slack/企业微信/钉钉),为不同严重级别设置升级策略与值班人。
    • 建议以“基线 + 环比/同比”方式设置动态阈值,减少误报并提升告警有效性。

0