有没有什么方法可以使用普罗米修斯指标来表示 POD CPU 在 CPU 核心方面的使用情况

Is there any way to represent POD CPU usage in terms of CPU cores using prometheus metrics

我只想表示 POD 的 CPU 指标,如下所示

我能够根据 CPU 核心表示 CPU 请求和限制,这些核心可通过普罗米修斯抓取指标直接获得。

但是在 prometheus 中,我没有看到任何直接指标来获取 POD 使用的 CPU 核心,所以,有人可以给我解决方法或表示 CPU 用法的方法吗POD 的 CPU 个内核。

提前致谢

您要查找的查询是:

sum(rate(container_cpu_usage_seconds_total{container_name!="POD"}[1m])) by (pod_name)

解释如下(从内到外,普罗米修斯计算这个查询):

  • container_cpu_usage_seconds_total 告诉你 CPU 被占用了多长时间。 1s = 一个核心整整一秒
  • {container_name!="POD"} 忽略元 cGroups。
  • rate(....[1m]) 为您提供定义间隔内的值变化,这里是 1 分钟
  • sum(....) by (pod_name) 将包含相同 pod 名称的所有值相加,如果我们在同一个 pod 中有多个容器,就会出现这种情况

有关 Kubernetes 中 Prometheus 的更多信息,您可以在此处阅读此博客:https://blog.freshtracks.io/a-deep-dive-into-kubernetes-metrics-part-3-container-resource-metrics-361c5ee46e66

从 Kuberntes 1.16 开始,container_namepod_name 标签已重命名为 containerpod - 有关详细信息,请参阅 this issue。因此,对于 Kubernetes 1.16+,必须使用以下 PromQL 查询来计算 per-pod CPU 在 CPU 核心中的使用情况:

sum(rate(container_cpu_usage_seconds_total{container!~"POD|"}[5m])) by (pod)