PromQL计算忽略0值问题:磁盘写入使用率查询优化求助
解决方案
直接在原指标上添加!= 0过滤条件,排除0值后再进行后续的increase和sum_over_time计算,修改后的查询如下:
sum_over_time(increase(diskWriteBytes{vid="112345"} != 0 [1d] offset -1d )[1d:1d])
原理说明
- 原查询未过滤0值的原因:你之前的查询是先对原始指标做
increase计算,此时0值已经被纳入区间增量的统计中,后续无法再排除这些无效值。 - 调整逻辑:在range向量
[1d]前添加!= 0,先过滤掉所有diskWriteBytes为0的样本点,确保只有非0的有效数据进入increase计算,最终sum_over_time统计的也是过滤后的增量总和。
额外注意事项
如果你的diskWriteBytes是计数器类型(通常磁盘写入字节数属于计数器指标),出现0值可能是指标重置导致的。如果需要更严谨的处理,可以结合resets()函数排查重置情况,但如果只是单纯忽略0值样本,上述查询已经足够满足需求。
内容的提问来源于stack exchange,提问作者Mohammad Ilbeygi
相关产品推荐
相关产品推荐

