Prometheus 从序列结果中省略标签

Prometheus 从序列结果中省略标签,prometheus,promql,prometheus-operator,kube-state-metrics,Prometheus,Promql,Prometheus Operator,Kube State Metrics,假设我编写了一个基本的PromQL查询,如下所示 查询: kube\u部署\u规范\u副本{} 结果: kube\u部署\u规范\u副本{deployment=“mydeployment”,endpoint=“myendpoint”,instance=“myinstance”,job=“myjob”,namespace=“default”,pod=“mypod”,service=“myservice”} 是否有一种干净的方法可以从生成的时间序列中省略实例和pod 期望的: kube_deploy

假设我编写了一个基本的PromQL查询,如下所示

查询:
kube\u部署\u规范\u副本{}

结果:
kube\u部署\u规范\u副本{deployment=“mydeployment”,endpoint=“myendpoint”,instance=“myinstance”,job=“myjob”,namespace=“default”,pod=“mypod”,service=“myservice”}

是否有一种干净的方法可以从生成的时间序列中省略
实例
pod

期望的:
kube_deployment\u spec_replications{deployment=“mydeployment”,endpoint=“myendpoint”,job=“myjob”,namespace=“default”,service=“myservice”}

您需要使用Prometheus查询运算符。根据您的用例,您可以使用avg或sum


您可以在此处查看更多信息:

按照Sergio的建议,尝试使用以下方法:

sum(kube_deployment_spec_replicas) without (instance, pod)
此查询将从结果中删除
instance
pod
标签。请注意,如果存在多个具有相同标签集的
(实例,pod)
时间序列的
kube\u部署\u spec\u副本,则查询将无法按预期工作。在这种情况下,查询将汇总这些时间序列

p、 美国通过
label\u del
功能提供更明显的标签删除解决方案:

label_del(kube_deployment_spec_replicas, "instance", "pod")

如问题中所示,我的查询不使用内置函数,使用内置函数也无法实现所需的行为。另外,我正试图以一种干净的方式完成这项工作(没有嵌套的标签替换),为什么要这样做?您不能只删除标签,因为查询的结果需要具有唯一的timeseries,而简单地删除标签将违反该约束。@Oliver这些指标是通过kube state metrics作业收集的。当作业向上和向下扩展时,这些度量的实例和pod标签会发生变化。这会导致prometheus alertmanager潜在地将prometheus警报的状态从触发更改为挂起。那么所有指标都是相同的吗?那么为什么不按照Sergio的建议使用max或avg将时间序列减少到每个部署一个呢。