如何从Prometheus查询中过滤出匹配结果

时间:2020-08-05 11:42:04

标签: prometheus

如何从普罗米修斯查询结果中排除两组指标?这是我想做的sudo代码:

kubelet_volume_stats_available_bytes | remove(
   kubelet_volume_stats_available_bytes{namespace="ignore-this"},
   kubelet_volume_stats_available_bytes{namespace="default", pvc="cache"}
)

某些背景-我们有普罗米修斯警报,当预计4天后音量已满时会触发。在大多数情况下,这是个很好的警报。不幸的是,有两个系统都可以使用完整磁盘。一个系统在单独的命名空间中运行,这很容易被排除,另一个系统在默认的kubernetes命名空间中运行,因此,我要恰好排除一个指标(名称空间=默认值,pvc =缓存)。

完整查询:

(
    kubelet_volume_stats_available_bytes{job="kubelet", namespace!="ignore-this", metrics_path="/metrics"}
    /
    kubelet_volume_stats_capacity_bytes{job="kubelet", namespace!="ignore-this", metrics_path="/metrics"}
) < 0.15
and
predict_linear(
    kubelet_volume_stats_available_bytes{job="kubelet", namespace!="ignore-this", metrics_path="/metrics"}[6h], 4 * 24 * 3600
)
< 0

如何忽略带有这些标签namespace=default, pvc=cache的指标?

1 个答案:

答案 0 :(得分:0)

解决方案是使用unless运算符:

ORIGINAL QUERY ...
unless (
    kubelet_volume_stats_available_bytes(namespace!="ignore-this")
    or
    kubelet_volume_stats_available_bytes{namespace="default", pvc="cache"}
)