如何使用普罗米修斯以百分比形式获取 Pod 的 CPU 和内存使用情况
How to get CPU and memory usage of pod in percentage using promethus
我想使用 promql/Prometheus.
以下列格式显示 pod 详细信息
此外,我想使用 promql
以下面的格式显示 CPU 和 application/component 的内存利用率
promql 查询:sum(container_memory_working_set_bytes) by (pod)
我可以使用上面的查询获取 pod 消耗的内存。
如何计算内存使用百分比?我无法使用 promql 获取有状态 Pod 的内存限制
您能否提出任何 query/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(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
Per-pod CPU 使用百分比(查询不会 return CPU 使用 pods 没有 CPU 限制)
100 * max(
rate(container_cpu_usage_seconds_total[5m])
/ on (container, pod)
kube_pod_container_resource_limits{resource="cpu"}
) by (pod)
如果必须使用 kube-state-metrics pod is improperly configured. In this case the original pod
label for this metric is moved to the exported_pod
label because of honor_labels
behavior - see these docs for details. In this case label_replace 函数的抓取配置将 exported_pod
标签移动到 pod
标签,则 kube_pod_container_resource_limits
指标可能会被错误抓取:
100 * max(
rate(container_cpu_usage_seconds_total[5m])
/ on (container, pod)
label_replace(kube_pod_container_resource_limits{resource="cpu"}, "pod", "", "exported_pod", "(.+)")
) by (pod)
Per-pod 内存使用百分比(查询不会 return 没有内存限制的 pods 内存使用)
100 * max(
container_memory_working_set_bytes
/ on (container, pod)
kube_pod_container_resource_limits{resource="memory"}
) by (pod)
如果 kube_pod_container_resource_limits
指标如上所述被错误地抓取,则必须使用 label_replace 函数将 exported_pod
标签值移动到 pod
:
100 * max(
container_memory_working_set_bytes
/ on (container, pod)
label_replace(kube_pod_container_resource_limits{resource="memory"}, "pod", "", "exported_pod", "(.+)")
) by (pod)
我想使用 promql/Prometheus.
以下列格式显示 pod 详细信息此外,我想使用 promql
以下面的格式显示 CPU 和 application/component 的内存利用率promql 查询:sum(container_memory_working_set_bytes) by (pod)
我可以使用上面的查询获取 pod 消耗的内存。
如何计算内存使用百分比?我无法使用 promql 获取有状态 Pod 的内存限制 您能否提出任何 query/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(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
Per-pod CPU 使用百分比(查询不会 return CPU 使用 pods 没有 CPU 限制)
100 * max(
rate(container_cpu_usage_seconds_total[5m])
/ on (container, pod)
kube_pod_container_resource_limits{resource="cpu"}
) by (pod)
如果必须使用 kube-state-metrics pod is improperly configured. In this case the original pod
label for this metric is moved to the exported_pod
label because of honor_labels
behavior - see these docs for details. In this case label_replace 函数的抓取配置将 exported_pod
标签移动到 pod
标签,则 kube_pod_container_resource_limits
指标可能会被错误抓取:
100 * max(
rate(container_cpu_usage_seconds_total[5m])
/ on (container, pod)
label_replace(kube_pod_container_resource_limits{resource="cpu"}, "pod", "", "exported_pod", "(.+)")
) by (pod)
Per-pod 内存使用百分比(查询不会 return 没有内存限制的 pods 内存使用)
100 * max(
container_memory_working_set_bytes
/ on (container, pod)
kube_pod_container_resource_limits{resource="memory"}
) by (pod)
如果 kube_pod_container_resource_limits
指标如上所述被错误地抓取,则必须使用 label_replace 函数将 exported_pod
标签值移动到 pod
:
100 * max(
container_memory_working_set_bytes
/ on (container, pod)
label_replace(kube_pod_container_resource_limits{resource="memory"}, "pod", "", "exported_pod", "(.+)")
) by (pod)