如何计算kube状态指标中pod的cpu使用率?

时间:2019-06-16 10:04:27

标签: kubernetes monitoring prometheus kube-state-metrics

我使用kubernetes API和prometheus远程监视eks集群。 在Kubernetes api中,我们有一个指标 container_cpu_usage_seconds_total ,它给出了pod的CPU使用率。 在kube-state-metrics中是否有类似的指标可以提供cpu的使用。 实际上我正在尝试获取与kubernetes api和kube-state-metrics完全不同的集群cpu使用率 以下是计算。

kube-state-metrics:

sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100-占101%

而kube-state-metrics给出的12%在我看来是准确的。

kubernetes-api:

sum (rate (container_cpu_usage_seconds_total{id="/",kubernetes_io_hostname=~"^$Node$", job=~"$job$"}[5m])) / sum (machine_cpu_cores{kubernetes_io_hostname=~"^$Node$", job=~"$job$"}) * 100

与kubernetes-api相比,我认为kube-state-metric中没有任何指标可以提供cpu使用率

谢谢。

1 个答案:

答案 0 :(得分:1)

kube_state_metric中,没有针对每个容器的cpu使用率的特定指标。

您获得的价值: sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100 = 101 可能是错误的,因为诸如 kube_node_status_allocatable_cpu_cores kube_pod_container_resource_requests_cpu_cores 之类的指标被标记为 DEPRECIATED

同时请注意,有一个指标,例如 kube_pod_container_resource_limits_cpu_cores 。 您的容器可能设置了资源限制,这就是为什么您的结果可能超过 100%的原因。如果为每个容器设置了限制,请检查资源限制是否低于该资源请求,然后您的计算应如下所示: [sum(kube_pod_container_resource_requests_cpu_cores) - sum(kube_pod_container_resource_limits_cpu_cores)]/ sum(kube_node_status_allocatable_cpu_cores) * 100

kube_state_metrics 中查看容器和节点的每个资源指标: node_metricspod_container_metrics