如何从普罗米修斯查询中过滤出匹配结果

How to filter out matching results from prometheus query

如何从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"}
)

一些背景 - 我们有 prometheus 警报,当预计容量将在 4 天内满时触发。在大多数情况下,这是非常警觉的。不幸的是,有两个系统可以使用完整磁盘。一个系统在单独的命名空间中 运行,排除起来很简单,另一个系统在默认的 kubernetes 命名空间中 运行,因此我想排除一个指标(namespace=default,pvc=cache) .

完整查询如下:

(
    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

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

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