首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >普罗米修斯多对多问题

普罗米修斯多对多问题
EN

Stack Overflow用户
提问于 2019-01-04 15:37:29
回答 5查看 4.5K关注 0票数 3

在那里,

我正在使用Prometheus配置Kubernetes Cronjobs监视和警报。我发现这个有用的指南

但是我总是得到一个,不允许多对多匹配:匹配标签必须是唯一的,错误。

例如,这是触发此错误的PromQL查询:

max( kube_job_status_start_time * ON(job_name) GROUP_RIGHT() kube_job_labels{label_cronjob!=""} ) BY (job_name, label_cronjob)

查询本身就产生了这些度量标准。

kube_job_status_start_timekube_job_status_start_time{app="kube-state-metrics",chart="kube-state-metrics-0.12.1",heritage="Tiller",instance="REDACTED",job="kubernetes-service-endpoints",job_name="test-1546295400",kubernetes_name="kube-state-metrics",kubernetes_namespace="monitoring",kubernetes_node="REDACTED",namespace="test-develop",release="kube-state-metrics"}

kube_job_labels{label_cronjob!=""}kube_job_labels{app="kube-state-metrics",chart="kube-state-metrics-0.12.1",heritage="Tiller",instance="REDACTED",job="kubernetes-service-endpoints",job_name="test-1546295400",kubernetes_name="kube-state-metrics",kubernetes_namespace="monitoring",kubernetes_node="REDACTED",label_cronjob="test",label_environment="test-develop",namespace="test-develop",release="kube-state-metrics"}

这里有什么东西我遗漏了吗?对于我从指南中尝试的每一个查询,都会发生相同的多到多错误。即使是自己从头开始构建它,也会导致同样的错误。希望你能在这里帮我:)

EN

回答 5

Stack Overflow用户

发布于 2020-04-15 07:52:46

在我的例子中,当通过helm安装时,我不会从Prometheus获得这个额外的标签(稳定/prometheus-操作符)。

你需要在普罗米修斯中配置它。它调用: honor_labels: false

代码语言:javascript
复制
# If honor_labels is set to "false", label conflicts are resolved by renaming
# conflicting labels in the scraped data to "exported_<original-label>" (for
# example "exported_instance", "exported_job") and then attaching server-side
# labels.

因此,您必须使用选项honor_labels: false配置您的honor_labels文件- config。

代码语言:javascript
复制
# Setting honor_labels to "true" is useful for use cases such as federation and
# scraping the Pushgateway, where all labels specified in the target should be
# preserved

无论如何,如果我有这样的(我现在有exported_jobs),仍然不能做正确的查询,但我想仍然是因为我的LHS。

代码语言:javascript
复制
Error executing query: found duplicate series for the match group 
{exported_job="kube-state-metrics"} on the left hand-side of the operation: 
[{__name__=
票数 2
EN

Stack Overflow用户

发布于 2021-08-06 17:26:05

我在关注这篇文章时遇到了同样的问题,但是对于我来说,我实际上得到了重复的作业名称,但是在不同的名称空间中。

例如。运行kube_job_status_start_time

代码语言:javascript
复制
kube_job_status_start_time{instance="REDACTED",job="kube-state-metrics",job_name="job-abc-123",namespace="us"}
kube_job_status_start_time{instance="REDACTED",job="kube-state-metrics",job_name="job-abc-123",namespace="ca"}

因此,我必须为名称空间添加一个筛选器,或者将名称空间添加到ON/BY子句中,以使其成为唯一的。

例如,对于其中一个子查询,我必须这样做:

代码语言:javascript
复制
   max(
      kube_job_status_start_time
      * ON(namespace, job_name) GROUP_RIGHT()
      kube_job_labels{label_cronjob!=""}
    ) BY (namespace, label_cronjob)

实际上,它必须将这一原则应用到所有其他查询中,才能为我工作。不确定这是否适用于你的情况。

票数 2
EN

Stack Overflow用户

发布于 2019-02-26 16:23:43

kube_job_status_start_time替换为max(kube_job_status_start_time) by (job_name)将聚合出所有重复项,并应解决此错误。

生成的查询如下所示

代码语言:javascript
复制
       max(
            max(kube_job_status_start_time) by (job_name)
            * ON(job_name) GROUP_RIGHT()
            kube_job_labels{label_cronjob!=""}
          ) BY (job_name, label_cronjob)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54041980

复制
相关文章

相似问题

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