1. 使用MongoDB自带命令行工具
Debian系统自带mongodb-clients包,包含mongostat、mongotop、mongo等工具,可直接监控MongoDB实例的基本状态。
sudo apt install mongodb-clients;使用命令:mongostat --host localhost --port 27017 -u <用户名> -p <密码> --authenticationDatabase admin。mongotop --host localhost --port 27017 -u <用户名> -p <密码> --authenticationDatabase admin。db.serverStatus()查看服务器整体状态(如连接数、锁等待时间、缓存命中率),db.stats()查看数据库统计信息(如数据大小、索引数量),db.currentOp()查看当前正在执行的操作(如长时间运行的查询)。2. 利用systemd和journalctl监控服务状态
若MongoDB通过systemd管理(默认方式),可使用以下命令监控服务运行状态和日志:
sudo systemctl status mongod(显示是否运行、最近启动时间、错误信息等)。sudo journalctl -u mongod -f(跟踪MongoDB日志输出,便于诊断崩溃、连接问题等)。3. 第三方监控工具(推荐用于生产环境)
mongodb-exporter采集MongoDB指标并可视化。mongodb-exporter(Debian仓库可能没有最新版,建议从MongoDB官网下载deb包);② 配置Prometheus(编辑/etc/prometheus/prometheus.yml,添加MongoDB抓取目标:scrape_configs: - job_name: 'mongodb' static_configs: - targets: ['localhost:9216']);③ 配置Grafana(添加Prometheus数据源,导入MongoDB监控模板,如ID为1860的官方模板),实现CPU、内存、连接数、查询延迟等指标的实时监控和告警。4. 日志分析与ELK Stack
开启MongoDB慢查询日志,收集并分析日志以优化性能:
/etc/mongod.conf,添加operationProfiling: slowOpThresholdMs: 100 mode: slowOp(记录执行时间超过100ms的查询)。/etc/logrotate.d/mongodb,避免日志文件过大(如每天轮转、保留7天、压缩旧日志)。