如何在Prometheus中计算指标日增量前过滤指定值?
解决Prometheus计算日增量时过滤特定值的问题
你可以通过先过滤掉值为0的样本,再计算delta的方式来解决这个问题,具体表达式如下:
delta((metric_name != 0)[1d])
说明:
metric_name != 0:筛选出所有值不为0的瞬时样本,直接排除干扰的0值数据。(...) [1d]:将过滤后的瞬时向量转换为过去1天的范围向量,保留这段时间内所有非0的样本点。delta(...):对过滤后的范围向量计算增量,得到排除0值干扰后的日增量结果。
注意事项:
- 如果过滤后的范围向量中不足2个有效样本(比如过去1天里只有1个非0样本,或者全被过滤掉了),
delta会返回空结果——这是因为delta需要至少两个样本点才能计算差值。 - 如果你的指标是计数器类型(值只会递增或重置),更推荐使用
increase()函数替代delta(),它能自动处理计数器重置的情况,过滤0值的写法类似:increase((metric_name != 0)[1d])。
内容的提问来源于stack exchange,提问作者yellowhat
相关产品推荐
相关产品推荐

