游乐游手机版
首页/系统平台/文章详情

Ubuntu系统下MongoDB监控方法与性能监控实践

时间:2026-08-20 19:10
在Ubuntu上监控MongoDB的实际操作一 快速上手 内置与命令行工具服务与日志检查运行状态:sudo systemctl status mongod实时查看日志:journalctl -u mongod -f实时性能吞吐与锁:mongostat --host localhost --port

在Ubuntu上监控MongoDB的实际操作

MongoDB在Ubuntu上的监控怎么做

一 快速上手 内置与命令行工具

  • 服务与日志
    • 检查运行状态:sudo systemctl status mongod
    • 实时查看日志:journalctl -u mongod -f
  • 实时性能
    • 吞吐与锁:mongostat --host localhost --port 27017 --username admin --password --authenticationDatabase admin
      • 关注:insert/query/update/delete、getmore、command、flushes、mapped、faults、locked、qr/qw、ar/aw
    • 集合热点:mongotop --host localhost --port 27017 --username admin --password --authenticationDatabase admin
      • 关注:按 ns(库.集合)read/write 时间占比
  • Shell 诊断
    • 全局状态:db.serverStatus()(含 connections、mem、metrics、opcounters、wiredTiger、repl 等)
    • 集合统计:db.collection.stats()(含 count、size、storageSize、totalIndexSize、indexSizes
    • 查询诊断:db.collection.find({…}).explain(“executionStats”)(看 executionTimeMillis、totalKeysExamined、totalDocsExamined、stage
    • 当前操作:db.currentOp() 定位长事务/慢操作

二 图形化与托管监控

  • 官方 GUI:MongoDB Compass
    • 安装示例:wget https://downloads.mongodb.com/compass/mongodb-compass_1.26.0_amd64.deb && sudo dpkg -i mongodb-compass_1.26.0_amd64.deb
    • 连接实例后可查看 性能指标、索引、查询分析,适合日常巡检与开发排障
  • 官方托管:MongoDB Cloud Manager
    • 提供 监控、告警、备份、性能顾问 等,适合生产环境的持续观测与合规
  • 企业/传统平台
    • Zabbix:通过模板/自定义键值采集并做阈值告警,适合已有 Zabbix 体系的团队

三、自建可观测性平台:Prometheus与Grafana

  • 组件与端口
    • mongodb_exporter(Percona):默认 9216
    • Prometheus:默认 9090
    • Alertmanager:默认 9093
    • Grafana:默认 3000
  • 部署示例(Docker)
    • 启动 exporter:docker run -d --name mongodb_exporter -p 9216:9216 -e MONGODB_URI=mongodb://:@:27017 percona/mongodb_exporter:latest
  • Prometheus 抓取配置片段
    • scrape_configs:
      • job_name: ‘mongodb’static_configs:
        • targets: [‘:9216’]
  • Grafana
    • 添加 Prometheus 数据源,导入社区仪表盘(如 ID 2583 或 Percona 提供的 MongoDB Exporter 仪表盘)
  • 告警规则示例(rules.yml)
    • groups:
      • name: mongodb-alertsrules:
        • alert: MongodbDownexpr: mongodb_up == 0for: 0mlabels: { severity: critical }annotations:summary: “MongoDB Down on {{ $labels.instance }}”description: “MongoDB 实例不可达,当前值:{{ $value }}”
        • alert: MongodbTooManyConnectionsexpr: a vg by(instance) (rate(mongodb_ss_connections{conn_type=“current”}[1m])) / a vg by(instance) (sum by(instance)(mongodb_ss_connections)) * 100 > 80for: 2mlabels: { severity: warning }annotations:summary: “MongoDB 连接数超过 80%({{ $labels.instance }})”description: “当前连接占用率:{{ $value | humanizePercentage }}”
        • alert: MongodbCursorsTimeoutsexpr: increase(mongodb_ss_metrics_cursor_timedout[1m]) > 100for: 2mlabels: { severity: warning }annotations:summary: “MongoDB 游标超时过多({{ $labels.instance }})”description: “1 分钟内超时游标数:{{ $value }}”
        • alert: MongodbVirtualMemoryUsageexpr: (sum by(instance)(mongodb_ss_mem_virtual)) / (sum by(instance)(mongodb_ss_mem_resident)) > 3for: 2mlabels: { severity: warning }annotations:summary: “MongoDB 虚拟内存倍数过高({{ $labels.instance }})”description: “虚拟/常驻内存比:{{ $value | humanizePercentage }}”
  • 生效与验证
    • 配置检查:docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml
    • 热加载:curl -X POST https://localhost:9090/-/reload
    • 在 Prometheus:Status → Targets 确认 UP;Alerts 页面查看规则与触发状态

四 关键指标与告警建议

  • 连接与队列
    • 关注:connections.current/a vailable、qr/qw
    • 判定:持续接近上限或队列增长,可能预示阻塞或并发不足
  • 操作与错误
    • 关注:opcounters.insert/query/update/delete 的突增;asserts.regular/warning 异常
  • 内存与页面错误
    • 关注:mem.resident、mem.virtual、faults
    • 判定:缺页升高常提示工作集超过内存或索引/数据未充分缓存
  • 落盘与 WiredTiger
    • 关注:flushes(落盘次数)、wiredTiger.cache.*(bytes currently in cache、pages read/write)
    • 判定:评估 缓存命中I/O 压力
  • 复制健康(副本集)
    • 关注:replSetGetStatus 中的 optimeDate、health、lastHeartbeat
    • 判定:设置 复制延迟阈值告警
  • 慢查询
    • 开启并分析 profiling,结合 db.currentOp()explain(“executionStats”) 定位高成本查询与缺失/低效索引

五 安全与连通性配置要点

  • 启用鉴权
    • 配置 /etc/mongod.confsecurity.authorization: enabled
    • 监控采集使用具备只读/监控所需角色的专用账户
  • 网络与防火墙
    • 如需远程采集,配置 net.bindIp(如 0.0.0.0 或白名单),并放行 27017
    • 仅开放必要来源 IP
  • 最小权限
    • 避免使用高权限账户进行日常采集,遵循 最小权限原则
来源:https://www.yisu.com/ask/48501109.html
上一篇SQLPlus脚本编写技巧与常用方法总结 下一篇如何保障Ubuntu系统中Oracle数据库安全稳定运行
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证
系统平台 · 2026-09-01

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

Win10专业版U盘安装教程:制作启动盘与完整安装步骤
系统平台 · 2026-09-01

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

Windows10系统字体太小怎么调大
系统平台 · 2026-08-27

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

Win10磁盘占用100%基础排查:从监控到清理的完整步骤
系统平台 · 2026-08-27

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

Windows10系统怎么显示此电脑和控制面板
系统平台 · 2026-08-27

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。