繁体   English   中英

Prometheus中如何查询容器memory限制

[英]How to query container memory limit in Prometheus

我正在使用 Prometheus 工具来监控我的 Kube.netes 集群。

我在我的部署中设置了资源限制(内存限制),需要配置一个面板来显示可用的总数 memory。 请让我知道在 Prometheus 中运行所需的查询以获得可用于我的部署的总 memory 限制。

可以使用指标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函数来匹配两个度量的标签名称,因为它们是从不同的目标获得的。 由于每次pod重新启动都会创建一个新指标,因此avg用于获取pod重新启动之间的平均值。 {pod_name=~".+"}用于从container_memory_usage_bytes中过滤对这种情况无用的指标

从 Kube.netes v1.16 开始,以下 PromQL 查询返回每个容器免费 memory:

kube_pod_container_resource_limits{resource="memory"}
  - on(namespace, pod, container)
container_memory_usage_bytes

on()修饰符指示 Prometheus 在查找-运算符左侧和右侧具有相同标签的时间序列对时仅考虑列出的标签。 有关详细信息,请参阅这些文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM