PromQL查询,用于获取集群范围内的命名空间CPU使用情况



我在不同的命名空间中运行不同版本的应用程序,并设置了prometheus和grafana堆栈来监视它们。我使用下面的promql来获取不同pod的cpu使用情况(以1个内核的百分比表示(,它返回的值与我从kubectl top pods -n namespace:中获得的值匹配

sum (rate (container_cpu_usage_seconds_total{id!="/",namespace=~"$Namespace",pod=~"^$Deployment.*$"}[1m])) by (pod)*100

问题是,我想获得整个命名空间集群中所有pod的总cpu使用量,我尝试了不同的查询,但它们返回的值与我从上面的promql或kubectl top pods -n namespace获得的总cpu使用量不匹配。

我尝试过的promql查询:

sum (rate (container_cpu_usage_seconds_total{namespace=~"$Namespace",pod=~"^$Deployment.*$"}[1m])) by (namespace)
sum (rate (container_cpu_usage_seconds_total{namespace=~"$Namespace",pod=~"^$Deployment.*$"}[1m]))

我使用Singlestat,在Value部分的visualization中,我尝试了不同的show方法,如Average、total、current,但未返回正确的值。

我的问题是如何获得命名空间集群中所有pod的总cpu使用量?

以下PromQL查询应返回Kuberentes中所有pod中每个命名空间的CPU使用情况摘要(CPU使用情况以已使用的CPU核数表示(:

sum(rate(container_cpu_usage_seconds_total{container!=""}[5m])) by (namespace)

{container!~""}过滤器用于删除cgroups hierarchy的CPU使用度量,因为这些度量已经包含在非空的container标签中。

查询使用以下PromQL函数:

  • sum((
  • 费率((

我做了一些研究,发现了一些可以满足您需求的答案:

  1. 为了简单地监控集群级别的CPU使用情况,请使用:sum (rate (container_cpu_usage_seconds_total{id="/"}[1m])) / sum (machine_cpu_cores) * 100

  2. 如果您想查看命名空间的%CPU使用情况,则需要首先计算命名空间CPU使用率,然后将其除以集群中的可用CPU。它看起来是这样的:sum (rate (container_cpu_usage_seconds_total{namespace="$Namespace"}[1m])) / sum(machine_cpu_cores) * 100

  3. 您还可以使用Prometheus的任意标签来计算命名空间的CPU使用率。更多详细信息可以在这里找到。

  4. 最后你可以试试普罗米修斯出口商。

如果有帮助,请告诉我。

最新更新