无需Prometheus,如何将DigitalOcean MongoDB数据同步至Grafana仪表板?
无Prometheus情况下搭建Grafana MongoDB仪表板的可行方案
1. 直接用Grafana MongoDB数据源做聚合查询
在Grafana中添加官方MongoDB数据源,通过自定义聚合查询获取更全面的指标:
- 服务器级指标:执行
db.runCommand({ serverStatus: 1 }),可获取连接数、锁状态、内存占用、oplog运行情况等核心数据 - 集合级细节:针对单个集合执行
db.collection.stats(),能拿到存储大小、索引效率、文档数量等信息 - 慢查询追踪:若托管服务支持开启数据库profiling,可通过
db.system.profile集合查询慢日志;部分托管平台(如Atlas)直接提供慢查询日志访问入口,可将日志导入Grafana日志类数据源做可视化
2. 托管平台原生集成(以MongoDB Atlas为例)
如果用Atlas托管MongoDB:
- 开启Atlas自带监控后,通过Grafana官方的MongoDB Atlas数据源直接拉取集群状态、查询性能、磁盘IO、网络流量等多维度指标
- 调用Atlas的监控API,写简单脚本定期拉取数据并存入Grafana兼容的时序库(如InfluxDB、Grafana Cloud时序存储),再由Grafana读取展示
3. 自定义脚本采集+导入Grafana
编写Python/Shell脚本,通过托管服务提供的MongoDB连接URI定期执行查询,采集目标指标:
- 采集示例:
- 当前活跃连接数:
db.runCommand({ currentOp: 1 }).inprog.length - 索引命中率:
db.runCommand({ serverStatus: 1 }).metrics.queryExecutor.totalKeysExamined / db.runCommand({ serverStatus: 1 }).metrics.queryExecutor.totalDocsExamined - 最近10条慢查询:
db.system.profile.find({ millis: { $gt: 100 } }).sort({ ts: -1 }).limit(10)
- 当前活跃连接数:
- 将采集到的数据写入CSV、InfluxDB或Prometheus Pushgateway(仅需在外部服务器部署,无需安装在MongoDB端),再在Grafana中配置对应数据源完成可视化
4. 企业级托管工具API同步
若使用MongoDB Cloud Manager/Ops Manager托管,可通过其提供的REST API拉取监控数据,将数据同步至Grafana,或直接配置Grafana通过API获取指标
内容的提问来源于stack exchange,提问作者nico
相关产品推荐
相关产品推荐

