如果我没有接近Kubernetes容器CPU限制,请使用Prometheus进行检测

时间:2019-04-19 13:30:38

标签: kubernetes openshift grafana prometheus

我想使用Prometheus(Grafana / alerting)来检测我的容器的实际CPU使用率是否高于/低于CPU请求并且没有接近CPU限制吗?

对于内存消耗,我设法做到了:

sum by(container_name, pod_name)(container_memory_usage_bytes{namespace=~"myNamespace",pod_name=~"myPodName",container_name=~"myContainerName"})
kube_pod_container_resource_requests_memory_bytes{namespace=~"myNamespace",pod=~"myPodName", container =~"myContainerName"}
kube_pod_container_resource_limits_memory_bytes{namespace=~"myNamespace",pod=~"myPodName", container=~"myContainerName"}

例如,通过使用以下命令,我可以使用CPU实现相同的功能: container_cpu_usage_seconds_total,但我无法将其链接到kube_pod_container_resource_requests_cpu_cores,并且不确定这两个指标是否具有可比性。

对此有何建议?

1 个答案:

答案 0 :(得分:2)

我使用此查询来获取pod正在使用的CPU限制的百分比。

sum(label_replace(rate(container_cpu_usage_seconds_total{container_name =~ ".+"}[1m]), "pod", "$1", "pod_name", "(.*)")) by (pod, namespace) /
sum(kube_pod_container_resource_limits_cpu_cores{}) by (pod, namespace) * 100

对于RAM:

sum(container_memory_working_set_bytes) by (container_name, namespace) / 
sum(label_join(kube_pod_container_resource_limits_memory_bytes, "container_name", "", "container")) by (container_name, namespace) * 100