如果我的容器实际CPU使用率高于/低于CPU请求并且没有接近CPU限制,我想检测使用Prometheus(Grafana / alerting)?
对于内存消耗,我设法通过这样做:
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
,并且不确定这两个指标是否具有可比性。
有什么建议吗?
我使用此查询来获取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