如何在VictoriaMetrics/Prometheus中剔除计算中的错误样本值?
VictoriaMetrics温度数据过滤与聚合解决方案
问题根源
你之前的查询逻辑有误:min_over_time(temperature{label="value"}[30d] > 0) 是先拉取30天全量样本,再对每个样本做>0的布尔判定(输出1或0),最后聚合的是这些布尔值的极值,完全偏离了温度数据的计算目标。
正确查询示例
必须先筛选有效样本,再执行时间范围聚合:
30天有效温度最小值
min_over_time((temperature{label="value"} >= 100 and temperature <= 500)[30d]) / 10
30天有效温度最大值
max_over_time((temperature{label="value"} >= 100 and temperature <= 500)[30d]) / 10
关键说明
- 原始指标为整数,除以10得到0.1精度温度,因此10℃对应原始值100,50℃对应500,用
>=100 and <=500直接过滤掉-15(对应-1.5℃)这类错误样本。 - 过滤条件需用括号包裹后紧跟
[30d],确保仅对30天内符合条件的样本做聚合,而非先取全量样本再过滤。 - 若需保留800的上限限制,将过滤条件中的
<=500替换为<=800即可。
内容的提问来源于stack exchange,提问作者skylighty
相关产品推荐
相关产品推荐

