每个 Pod 的 CPU 使用率百分比(查询不会返回没有 CPU 限制的 Pod 的 CPU 使用率)
100 * max(
rate(container_cpu_usage_seconds_total[5m])
/ on (container, pod)
kube_pod_container_resource_limits{resource="cpu"}
) by (pod)
The kube_pod_container_resource_limits
如果抓取配置为kube 状态指标 https://github.com/kubernetes/kube-state-metrics/pod 配置不正确。在这种情况下,原来的pod
该指标的标签已移至exported_pod
标签因为honor_labels
行为——见这些文档 https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config了解详情。在这种情况下标签替换 https://docs.victoriametrics.com/MetricsQL.html#label_replace函数必须用于移动exported_pod
标签到pod
label:
100 * max(
rate(container_cpu_usage_seconds_total[5m])
/ on (container, pod)
label_replace(kube_pod_container_resource_limits{resource="cpu"}, "pod", "$1", "exported_pod", "(.+)")
) by (pod)
每个 Pod 内存使用情况百分比(查询不会返回没有内存限制的 Pod 的内存使用情况)
100 * max(
container_memory_working_set_bytes
/ on (container, pod)
kube_pod_container_resource_limits{resource="memory"}
) by (pod)
If the kube_pod_container_resource_limits
如上所述,指标被错误地抓取,那么标签替换 https://docs.victoriametrics.com/MetricsQL.html#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", "$1", "exported_pod", "(.+)")
) by (pod)