Как отфильтровать совпадающие результаты из запроса prometheus - PullRequest
0 голосов
/ 05 августа 2020

Как исключить два набора метрик из результатов запроса 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 по умолчанию, поэтому для этого я хочу исключить ровно одну метрику c (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?

1 Ответ

0 голосов
/ 16 августа 2020

Решение заключалось в использовании оператора unless:

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