基于Prometheus数据源,Grafana能否按数值范围分组数据?
针对Prometheus文件系统填充百分比区间监控的解决方案
不需要手动创建子数据集,用PromQL的条件过滤和聚合函数就能轻松实现按数值区间的监控统计,以下是几种实用方法:
1. 直接用count+条件过滤统计各区间实例数
假设你的文件系统填充百分比指标是fs_fill_percent(如果用node_exporter,对应计算式为100 - (node_filesystem_avail_bytes / node_filesystem_size_bytes * 100)),可通过以下PromQL分别统计各区间的文件系统数量:
- 0-25%区间:
count(fs_fill_percent < 25) - 25-50%区间:
count(fs_fill_percent >= 25 and fs_fill_percent < 50) - 50-75%区间:
count(fs_fill_percent >= 50 and fs_fill_percent < 75) - 75-100%区间:
count(fs_fill_percent >= 75)
如果需要排除/sys、/proc这类虚拟文件系统,可添加标签过滤:
count(fs_fill_percent < 25 and mountpoint!~"/sys|/proc|/dev")
2. 利用直方图指标简化区间统计
如果你的监控exporter已输出直方图类型指标(比如fs_fill_percent_bucket,包含le标签表示区间上限),可通过求和做差得到各区间数量:
- 获取各上限的累计数量:
sum by (le) (fs_fill_percent_bucket) - 计算25-50%区间的数量:
sum(fs_fill_percent_bucket{le="50"}) - sum(fs_fill_percent_bucket{le="25"})
这种方法适合长期跟踪区间分布变化,直方图还能配合histogram_quantile计算分位数。若当前只有gauge类型指标,可配置exporter生成对应直方图,或用Prometheus的recording rule将gauge转换为直方图。
3. 可视化层面的分组展示(以Grafana为例)
在Grafana中展示区间分布时,除了上述PromQL查询,还可以:
- 使用Bar面板,将四个区间的查询结果作为系列,直观对比各区间文件系统数量
- 使用Stat面板,每个面板对应一个区间,展示实例数及阈值告警
- 创建区间变量,通过变量替换自动生成各区间的查询语句
内容的提问来源于stack exchange,提问作者Fractaliste
相关产品推荐
相关产品推荐

