如何通过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
相关产品推荐
相关产品推荐

