Ubuntu下MongoDB监控方法
查看服务运行状态
使用systemctl
命令检查MongoDB服务是否处于运行状态,输出中的“Active: active (running)”表示服务正常:
sudo systemctl status mongodb
查看服务器状态详情
通过mongo shell
执行serverStatus()
命令,获取内存使用、连接数、锁等待、复制集状态等全面信息(需替换为实际数据库名或省略数据库名连接默认实例):
mongo --eval 'db.runCommand({ serverStatus: 1 })'
实时性能指标监控
mongostat
mongotop
当前操作查看
使用currentOp()
命令查看正在执行的操作(如慢查询、长时间运行的更新),可配合过滤条件(如secs_running
大于10秒的操作)快速定位问题:
db.currentOp({ "secs_running": { "$gt": 10 } })
explain()
可视化)。安装步骤:
./bin/compass
启动应用;mongodb://localhost:27017
)即可连接监控。Prometheus + Grafana
mongodb_exporter
(MongoDB官方导出器)采集性能指标(如mongodb_memory_usage_bytes
、mongodb_operations_inserts_total
);Percona Monitoring and Management (PMM)
开源监控解决方案,支持MongoDB、MySQL等多种数据库。功能包括:
MongoDB Atlas(托管服务)
若使用MongoDB Atlas托管数据库,可直接使用其内置监控功能:
查看MongoDB日志
默认日志路径为/var/log/mongodb/mongod.log
,使用tail
命令实时查看最新日志(如错误、警告信息):
sudo tail -f /var/log/mongodb/mongod.log
日志中常见关键信息包括:复制集同步错误、磁盘空间不足警告、查询超时记录。
慢查询日志分析
在/etc/mongod.conf
中开启慢查询日志(设置阈值,如超过100毫秒的查询),通过日志定位低效查询:
operationProfiling:
mode: slowOp
slowOpThresholdMs: 100
重启MongoDB服务使配置生效:
sudo systemctl restart mongodb
日志路径为/var/log/mongodb/mongod.log
,可通过grep
过滤慢查询记录:
grep "slow query" /var/log/mongodb/mongod.log