如何在PromQL中添加where子句?
我正在构建一个查询,当在Kubernetes中运行的应用程序运行超过一分钟时显示该查询,但我希望通过命名空间进行筛选。
这就是我目前查询的样子。
100 * (count(up == 1) BY (job, namespace, service) ) > 1这很好,但它给了我更多的信息,我不需要。
{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"}我想要完成的是只为jenkins和default命名空间获得结果。
{job="apiserver", namespace="default", service="kubernetes"}
{job="jenkins", namespace="jenkins", service="jenkins"}我试过
100 * (count(up == 1) BY (job, namespace, service) ) > 1 and ON {namespace="jenkins"}但是我得到了一个invalid parameter "query": 1:65: parse error: unexpected "{" in grouping opts, expected "("错误。
发布于 2021-04-13 14:26:07
您必须通过所需的标签(名称空间)过滤度量"up“--在您的示例中,它应该如下所示:
100 * count(up{namespace=~"default|jenkins"} == 1) > 1发布于 2021-08-03 14:15:44
time()-60 > (kube_pod_start_time)
发布于 2022-04-01 16:04:25
Prometheus提供了以下在查询中过滤数据的方法:
up{namespace=~"default|jenkins"}是一个序列选择器,它只返回名为up的时间序列,其中包含与给定的正则表达式:default|jenkins匹配的标签namespace。这大致相当于以下SQL:SELECT * FROM table WHERE name = 'up' and namespace ~ '^(default|jenkins)$'up == 0返回具有up名称的时间序列,该时间序列具有0值。这大致相当于以下SQL:SELECT * FROM table WHERE name = 'up' and value == 0up * on(instance) group_left(name) node_os_info通过up标签将up度量与node_os_info度量连接起来,并从node_os_info度量中选择附加的name标签。这大致相当于以下SQL:SELECT up.*, node_os_info.name
FROM up LEFT JOIN node_os_info ON (instance)https://stackoverflow.com/questions/67074188
复制相似问题