You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Percona MongoDB Exporter获取慢查询监控指标?

如何通过Percona MongoDB Exporter获取MongoDB慢查询指标

1. 先确保MongoDB慢查询分析(Profiling)已开启

Percona MongoDB Exporter的慢查询指标依赖MongoDB自身的profiling功能,必须先开启:

  • 通过Mongo Shell临时开启(重启后失效):
    # level=2 记录所有查询,slowms设置慢查询阈值(单位:毫秒)
    db.setProfilingLevel(2, { slowms: 100 })
    
  • 通过配置文件永久开启(修改mongod.conf后重启MongoDB):
    operationProfiling:
      mode: all
      slowOpThresholdMs: 100
    

2. 启动Exporter时启用Profiling采集

默认情况下,Percona MongoDB Exporter不会自动采集profiling数据,启动时需明确指定采集模块:

mongodb_exporter --mongodb.uri=mongodb://<用户名>:<密码>@<MongoDB地址>:<端口> --collect=profiling

如果需要采集全量指标,也可以用--collect-all替代--collect=profiling。

3. 可用的慢查询核心指标

以下是Exporter暴露的关键慢查询相关指标(均带标签database、collection、operation,可按维度拆分):

  • mongodb_profiling_queries_total:累计慢查询总数
  • mongodb_profiling_query_latency_seconds_sum:慢查询的总延迟时长(秒)
  • mongodb_profiling_query_latency_seconds_count:慢查询的累计数量(用于计算平均延迟)
  • mongodb_profiling_query_latency_seconds_bucket:慢查询延迟的直方图分布,可分析不同延迟区间的查询占比

4. 常用PromQL查询示例

  • 统计最近5分钟各集合的慢查询增量:
    sum(increase(mongodb_profiling_queries_total[5m])) by (database, collection, operation)
    
  • 计算最近5分钟各数据库慢查询的平均延迟:
    sum(increase(mongodb_profiling_query_latency_seconds_sum[5m])) by (database) 
    / 
    sum(increase(mongodb_profiling_query_latency_seconds_count[5m])) by (database)
    

5. 排查指标缺失问题

如果仍看不到指标,按以下步骤排查:

  • 检查MongoDB用户权限:Exporter使用的MongoDB账号需要拥有system.profile集合的read权限
  • 验证system.profile有数据:在Mongo Shell执行db.system.profile.find().limit(1),确认有慢查询记录生成
  • 查看Exporter日志:启动时加--log.level=debug,检查是否有profiling采集相关的错误信息
  • 确认Prometheus配置:检查scrape配置是否正确指向Exporter的端口(默认9216),且没有过滤相关指标

内容的提问来源于stack exchange,提问作者aadarsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:10:11