PromQL“where”子句

Ham*_*med 3 where-clause kubernetes prometheus promql

如何在 PromQL 中添加 where 子句?

我正在尝试构建一个查询,当 Kubernetes 中运行的应用程序运行超过一分钟时显示,但我想按命名空间进行过滤。

这就是我现在的查询的样子

100 * (count(up == 1) BY (job, namespace, service) ) > 1
Run Code Online (Sandbox Code Playgroud)

这工作正常,但它给了我不需要的额外信息。

{job="prometheus-grafana", namespace="monitor", service="prometheus-grafana"}
{job="jenkins", namespace="jenkins", service="jenkins"}
{job="kube-state-metrics", namespace="monitor", service="prometheus-kube-state-metrics"}
{job="node-exporter", namespace="monitor", service="prometheus-prometheus-node-exporter"}
{job="kubelet", namespace="kube-system", service="prometheus-kube-prometheus-kubelet"}
{job="apiserver", namespace="default", service="kubernetes"}
Run Code Online (Sandbox Code Playgroud)

我想要完成的是仅获取jenkinsdefault命名空间的结果。

{job="apiserver", namespace="default", service="kubernetes"}
{job="jenkins", namespace="jenkins", service="jenkins"}
Run Code Online (Sandbox Code Playgroud)

我试过做

100 * (count(up == 1) BY (job, namespace, service) ) > 1 and ON {namespace="jenkins"}
Run Code Online (Sandbox Code Playgroud)

但我收到invalid parameter "query": 1:65: parse error: unexpected "{" in grouping opts, expected "("错误。

小智 7

您必须通过所需的标签(命名空间)“向上”过滤指标,在您的情况下,它应该看起来像这样:

100 * count(up{namespace=~"default|jenkins"} == 1) > 1
Run Code Online (Sandbox Code Playgroud)