我想使用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
,并且不确定这两个指标是否具有可比性。
对此有何建议?
答案 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