有没有什么方法可以使用 prometheus 指标来表示 POD CPU 使用情况(以 CPU 核心数为单位)

Ram*_*ana 5 grafana prometheus promql kubernetes-metrics

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

在此输入图像描述

我能够以 CPU 核心的形式表示 CPU 请求和限制,这些请求和限制可通过 prometheus scrape 指标直接获得。

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

提前致谢

sec*_*tor 9

您正在寻找的查询是这样的:

sum(rate(container_cpu_usage_seconds_total{container_name!="POD"}[1m])) by (pod_name)
Run Code Online (Sandbox Code Playgroud)

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

  • container_cpu_usage_seconds_total它可以告诉你 CPU 被占用的时间。1s = 一个核心持续一整秒
  • {container_name!="POD"}忽略元 cGroup。
  • 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


val*_*ala 5

从 Kubernetes 1.16 开始,container_name和标签pod_name已重命名- 有关详细信息,请参阅此问题。因此,对于 Kubernetes 1.16+,必须使用以下 PromQL 查询来计算 CPU 核心中每个 Pod 的 CPU 使用率:containerpod

sum(rate(container_cpu_usage_seconds_total{container!~"POD|"}[5m])) by (pod)
Run Code Online (Sandbox Code Playgroud)