首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PromQL "where“子句

PromQL "where“子句
EN

Stack Overflow用户
提问于 2021-04-13 11:42:52
回答 3查看 3.3K关注 0票数 2

如何在PromQL中添加where子句?

我正在构建一个查询,当在Kubernetes中运行的应用程序运行超过一分钟时显示该查询,但我希望通过命名空间进行筛选。

这就是我目前查询的样子。

代码语言:javascript
复制
100 * (count(up == 1) BY (job, namespace, service) ) > 1

这很好,但它给了我更多的信息,我不需要。

代码语言:javascript
复制
{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"}

我想要完成的是只为jenkinsdefault命名空间获得结果。

代码语言:javascript
复制
{job="apiserver", namespace="default", service="kubernetes"}
{job="jenkins", namespace="jenkins", service="jenkins"}

我试过

代码语言:javascript
复制
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 "("错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-13 14:26:07

您必须通过所需的标签(名称空间)过滤度量"up“--在您的示例中,它应该如下所示:

代码语言:javascript
复制
100 * count(up{namespace=~"default|jenkins"} == 1) > 1
票数 6
EN

Stack Overflow用户

发布于 2021-08-03 14:15:44

  • 你也可以试试这个。在库伯奈特斯,所有的资源都使用豆荚。因此,如果您采取荚状态度量,并减去当前时间60,这就给予后1分钟豆荚运行状态。

time()-60 > (kube_pod_start_time)

票数 0
EN

Stack Overflow用户

发布于 2022-04-01 16:04:25

Prometheus提供了以下在查询中过滤数据的方法:

  • 时间序列选择器。它们允许度量和标签对时间序列进行过滤。例如,up{namespace=~"default|jenkins"}是一个序列选择器,它只返回名为up的时间序列,其中包含与给定的正则表达式default|jenkins匹配的标签namespace。这大致相当于以下SQL:
代码语言:javascript
复制
SELECT * FROM table WHERE name = 'up' and namespace ~ '^(default|jenkins)$'
  • 比较算子,它允许按值过滤时间序列。例如,up == 0返回具有up名称的时间序列,该时间序列具有0值。这大致相当于以下SQL:
代码语言:javascript
复制
SELECT * FROM table WHERE name = 'up' and value == 0
  • 基于二进制算子的时间序列匹配。这允许执行类似于连接的查询。例如,up * on(instance) group_left(name) node_os_info通过up标签将up度量与node_os_info度量连接起来,并从node_os_info度量中选择附加的name标签。这大致相当于以下SQL:
代码语言:javascript
复制
SELECT up.*, node_os_info.name
FROM up LEFT JOIN node_os_info ON (instance)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67074188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档