Ubuntu系统下监控MongoDB系统资源的常用方法
MongoDB提供了多组内置命令行工具和shell命令,可直接获取系统资源使用情况及数据库性能指标:
mongostat(默认连接localhost:27017),输出为动态更新的表格,便于快速识别操作频率异常或资源瓶颈。mongotop可帮助定位慢查询集中的集合,优化索引或查询逻辑。db.serverStatus():返回MongoDB服务器的全面状态信息,涵盖内存使用(如wiredTiger缓存占用、虚拟内存大小)、连接数(当前连接、活跃连接)、锁等待时间、复制集状态等关键指标,是诊断服务器健康状况的“瑞士军刀”。db.stats():提供数据库级别的统计信息,包括数据总量(dataSize)、索引大小(indexSize)、存储空间占用(storageSize)、集合数量等,帮助了解数据库的规模和存储压力。db.currentOp():显示当前正在执行的数据库操作,包括操作类型、执行时间、客户端信息等,可用于排查长时间运行的查询或死锁问题。db.collection.stats():针对指定集合(如db.users.stats())的详细统计,涵盖文档数量、索引数量、索引大小、数据压缩率等,用于评估集合的性能和存储效率。MongoDB的性能与底层硬件资源紧密相关,需结合Ubuntu系统工具监控CPU、内存、磁盘、网络等基础指标:
htop(需安装:sudo apt install htop)提供更直观的动态界面,显示进程的CPU、内存占用率及排序;top(系统自带)则以文本形式输出,按CPU使用率排序,快速定位高负载进程。sudo apt install iotop),显示每个进程的磁盘读写速率(KB/s),帮助识别磁盘I/O瓶颈(如大量写入导致的延迟)。iftop(需安装:sudo apt install iftop)实时显示网络接口的带宽使用情况(如上传/下载速率),按IP地址排序;vnstat(需安装:sudo apt install vnstat)则以日志形式记录网络流量历史,生成日报、月报等统计报表。对于生产环境或需要长期、集中监控的场景,推荐使用第三方工具,实现可视化、告警及历史数据分析:
mongodb_exporter),将其配置为Prometheus的目标(在prometheus.yml中添加scrape_configs指向MongoDB Exporter的地址)。check_mongodb.pl检查服务状态)。适用于已有Zabbix/Nagios环境的团队,实现统一的IT基础设施监控。MongoDB的日志文件记录了详细的操作信息和错误提示,是排查问题的重要依据:
tail -f /var/log/mongodb/mongod.log命令实时跟踪日志输出,关注“ERROR”“WARNING”级别的消息(如连接失败、磁盘空间不足、索引未命中)。logrotate工具管理日志文件,避免日志过大占用磁盘空间。Ubuntu系统默认已配置MongoDB日志轮转(/etc/logrotate.d/mongodb),可自定义轮转周期(如每天)、保留数量(如7天)及压缩方式。