问题
I am using Prometheus tool for monitoring my Kubernetes cluster.
I have set a resource limit(memory limit) in my deployments and need to configure a panel for showing the total memory available. Please let me know the query needed to run in Prometheus for getting the total memory limit available for my deployment.
回答1:
It is possible using metrics kube_pod_container_resource_limits_memory_bytes (provided by kube-state-metrics) and container_memory_usage_bytes (provided by kubelet/cAdvisor)
label_replace(
label_replace(
kube_pod_container_resource_limits_memory_bytes{},
"pod_name",
"$1",
"pod",
"(.+)"
),
"container_name",
"$1",
"container",
"(.+)"
)
-
on(pod_name,namespace,container_name)
avg(
container_memory_usage_bytes{pod_name=~".+"}
)
by (pod_name,namespace,container_name)
A little explanation of the query: It is a subtraction of the memory limit and the actual usage. label_replace
functions are needed to match the label names of both metrics, as they are obtained from different targets. avg
is used to get the average between pod restarts, as every pod restart creates a new metric. {pod_name=~".+"}
is used to filter metrics from container_memory_usage_bytes
that are not useful for this case
来源:https://stackoverflow.com/questions/52584773/how-to-query-container-memory-limit-in-prometheus