首页主机资讯Ubuntu上MongoDB如何监控

Ubuntu上MongoDB如何监控

时间2025-12-17 02:04:04发布访客分类主机资讯浏览1055
导读:Ubuntu 上 MongoDB 监控实践指南 一 监控方案总览 系统与服务层:用 systemd 管理进程、查看状态与日志,快速判断实例是否存活与异常。 数据库自带工具:用 mongostat、mongotop 实时查看操作统计与集合读...

Ubuntu 上 MongoDB 监控实践指南

一 监控方案总览

  • 系统与服务层:用 systemd 管理进程、查看状态与日志,快速判断实例是否存活与异常。
  • 数据库自带工具:用 mongostatmongotop 实时查看操作统计与集合读写耗时;用 mongo shell 执行 db.serverStatus()db.collection.stats() 获取更细指标与诊断信息。
  • 可视化与长期存储:用 Prometheus + MongoDB Exporter + Grafana 搭建指标采集、存储与可视化;或用 MongoDB Compass 做图形化的实时洞察;有云需求可用 MongoDB Cloud Manager 集中监控与告警。

二 快速上手 系统与服务层监控

  • 服务状态与自启动
    • 查看状态:sudo systemctl status mongod
    • 启用自启:sudo systemctl enable mongod & & sudo systemctl start mongod
  • 实时日志与故障排查
    • 跟踪日志:sudo journalctl -u mongod -f
  • 一键健康检查脚本示例
    • 保存为 /usr/local/bin/check_mongo.sh
      #!/usr/bin/env bash
      if systemctl is-active --quiet mongod;
       then
        echo "MongoDB is running."
        exit 0
      else
        echo "MongoDB is down. Restarting..."
        sudo systemctl restart mongod
        exit 1
      fi
      
    • 赋权并加入定时任务(每 5 分钟检查一次)
      chmod +x /usr/local/bin/check_mongo.sh
      crontab -e
      */5 * * * * /usr/local/bin/check_mongo.sh
      
  • 常用排障
    • 端口占用:sudo lsof -i :27017
    • 日志过大:sudo journalctl --vacuum-size=100M

三 数据库自带与命令行监控

  • 实时性能概览
    • 操作统计:mongostat --host 127.0.0.1:27017
    • 集合读写耗时:mongotop --host 127.0.0.1:27017
  • 关键指标与诊断
    • 连接与内存:db.serverStatus().connections.mem
    • 操作计数:db.serverStatus().opcounters
    • 复制状态(副本集):rs.status()
    • 集合统计:db.collection.stats()
  • 图形化客户端
    • MongoDB Compass:连接实例后可直观查看性能指标、索引、查询分析等。

四 Prometheus Grafana MongoDB Exporter 监控与告警

  • 准备监控专用账号(推荐最小权限)
    • 在 mongo shell 中执行
      use admin
      db.createUser({
      
        user: "exporter",
        pwd: "StrongPassw0rd",
        roles: [
          {
       role: "readAnyDatabase", db: "admin" }
      ,
          {
       role: "clusterMonitor", db: "admin" }
      
        ]
      }
          )
      
  • 部署 MongoDB Exporter(以容器为例)
    • docker-compose.yml
      version: "3.8"
      services:
        mongodb_exporter:
          image: bitnami/mongodb-exporter:latest
          environment:
            MONGODB_URI: "mongodb://exporter:StrongPassw0rd@mongo:27017/admin?ssl=false"
          ports:
            - "9216:9216"
          restart: always
      
    • 启动:docker-compose up -d
    • 验证:curl http://localhost:9216/metrics
  • 配置 Prometheus 抓取
    • prometheus.yml
      scrape_configs:
        - job_name: 'mongodb'
          static_configs:
            - targets: ['<
          mongo_host_or_ip>
      :9216']
      
    • 热加载:curl -X POST http://:9090/-/reload
  • Grafana 可视化
    • 添加数据源:Prometheus URL http://:9090
    • 导入社区面板:搜索并导入 MongoDB Exporter / Percona MongoDB Exporter 面板(如 ID 2583 等),或自建面板
    • 常用查询示例
      • 实例存活:mongodb_up
      • 连接数:mongodb_connections{ state=“current”}
      • 每秒操作数:rate(mongodb_op_counters_total[5m])
      • 数据库大小:mongodb_db_size_bytes
  • 基础告警规则示例
    • Prometheus 规则
      groups:
        - name: mongodb
          rules:
            - alert: MongoDBDown
              expr: mongodb_up == 0
              for: 0m
              labels: severity: critical
              annotations:
                summary: "MongoDB Down on {
      {
       $labels.instance }
      }
      "
                description: "MongoDB instance is unreachable."
            - alert: MongoDBTooManyOpenCursors
              expr: mongodb_ss_metrics_cursor_open{
      csr_type="total"}
           >
       10000
              for: 2m
              labels: severity: warning
              annotations:
                summary: "MongoDB open cursors high on {
      {
       $labels.instance }
      }
      "
                description: "Open cursors: {
      {
       $value }
      }
          "
      
    • 在 Grafana 中配置 Alertmanager 接收与通知。

五 关键指标与告警建议

  • 建议重点关注的指标与阈值
    • 可用性:mongodb_up == 0(立即告警)
    • 连接数:当前连接接近 net.maxIncomingConnections 上限(结合业务评估阈值)
    • 游标:mongodb_ss_metrics_cursor_open 长时间很高或 mongodb_ss_metrics_cursor_timedout 增长快(可能客户端未正确关闭游标)
    • 操作速率:rate(mongodb_op_counters_total[5m]) 突降/突升(异常波动)
    • 复制与延迟(副本集):rs.status().optimeDate 各节点差距过大(网络或节点异常)
    • 存储与内存:mongodb_db_size_bytes 增长趋势、mem.resident 接近物理内存(结合 WiredTiger 缓存设置)
  • 优化与排障联动
    • 慢查询:开启并分析 profiling,配合 explain(“executionStats”) 优化索引与查询
    • 索引:为高频查询字段建立合适索引,定期清理无用索引
    • 配置:在 /etc/mongod.conf 中合理设置 storage.wiredTiger.engineConfig.cacheSizeGBnet.maxIncomingConnections 等参数,必要时结合 SSD 与内存扩容。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上MongoDB如何监控
本文地址: https://pptw.com/jishu/773509.html
MongoDB如何升级Ubuntu版本 Ubuntu上MongoDB安全吗

游客 回复需填写必要信息