如何使用Promethus以百分比的形式获取pod的CPU和内存使用率

问题描述

我想使用promql / Prometheus以以下格式显示窗格详细信息。

Image1

此外,我想使用promql以以下格式显示应用程序/组件的cpu和内存使用情况

Image2

promql查询:(pod)求和(container_memory_working_set_bytes)

我可以使用上面的查询按pod获取消耗的内存。

如何计算已用内存的百分比?我无法使用Promql提取有状态Pod的内存限制 您能否提出任何查询/ API详细信息?

解决方法

用于CPU百分比

max by (pod) (sum(rate(container_cpu_usage_seconds_total{namespace="$namespace",container_name!="POD",container_name!="",container!="monitoring-daemon"}[5m])) / sum(kube_pod_container_resource_limits{namespace="$namespace",resource="cpu"})) * 100

关于内存百分比

avg((avg (container_memory_working_set_bytes{pod="<Podname>"}) by (container_name,pod ))/ on (container_name,pod)(avg (container_spec_memory_limit_bytes>0 ) by (container_name,pod))*100)
,

我将其用于记忆:

round(max by(pod)(max_over_time(container_memory_usage_bytes {namespace =“ $ namespace”,pod =〜“。*”} [5m]))/ on(pod)(max by(pod)(kube_pod_container_resource_limits)) * 100,0.01)

这对于CPU来说: max by(pod)(sum(rate(rate(container_cpu_usage_seconds_total {namespace =“ $ namespace”,container_name!=“ POD”,container_name!=“”,container!=“ monitoring-daemon”} [5m]))/ sum(kube_pod_container_resource_limits {namespace =“ $ namespace”,resource =“ cpu”})))* 100