【发布时间】:2019-03-06 04:32:30
【问题描述】:
我正在使用 Prometheus 工具来监控我的 Kubernetes 集群。
我在我的部署中设置了资源限制(内存限制),需要配置一个面板来显示可用的总内存。请让我知道在 Prometheus 中运行以获取可用于我的部署的总内存限制所需的查询。
【问题讨论】:
标签: kubernetes prometheus prometheus-operator
我正在使用 Prometheus 工具来监控我的 Kubernetes 集群。
我在我的部署中设置了资源限制(内存限制),需要配置一个面板来显示可用的总内存。请让我知道在 Prometheus 中运行以获取可用于我的部署的总内存限制所需的查询。
【问题讨论】:
标签: kubernetes prometheus prometheus-operator
可以使用指标 kube_pod_container_resource_limits_memory_bytes(由 kube-state-metrics 提供)和 container_memory_usage_bytes(由 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)
查询的一点解释:它是内存限制和实际使用量的减法。需要label_replace 函数来匹配两个指标的标签名称,因为它们是从不同的目标获得的。 avg 用于获取 pod 重启之间的平均值,因为每次 pod 重启都会创建一个新指标。 {pod_name=~".+"} 用于过滤来自 container_memory_usage_bytes 的对这种情况无用的指标
【讨论】: