Prometheus如何统计Gauge指标指定时间范围内的活跃标签数量
解决方案
你之前的写法错误原因是:count_over_time()仅统计指定时间范围内指标的样本点上报次数,只要该时序有上报就会返回大于0的结果,无法筛选出指标值≥1的样本。
正确查询语句如下:
count(max_over_time(users_active_zipcode[$__range]) >= 1)
语句逻辑说明
- 首先通过
max_over_time(users_active_zipcode[$__range])计算每个zipcode对应Gauge指标在你选择的时间范围内的最大值 - 用
>=1过滤出最大值满足活跃要求的时序,只要最大值≥1就说明该邮政编码在时间范围内至少出现过一次满足要求的访问记录 - 最后用
count()统计满足条件的时序总数,就是你需要的活跃邮政编码数量
如果需要兼容指标存在缺失上报、或者需要排除临时值抖动的场景,可以调整为以下写法,明确判断时间范围内存在至少1个样本值≥1:
count(sum_over_time((users_active_zipcode >=1)[$__range:1m]) > 0)
这里的
1m是采样步长,你可以根据你的指标实际上报间隔调整,只要小于上报间隔就能覆盖所有样本点。
内容的提问来源于stack exchange,提问作者zpr
相关产品推荐
相关产品推荐

