【问题标题】:How to query container memory limit in Prometheus如何在 Prometheus 中查询容器内存限制
【发布时间】:2019-03-06 04:32:30
【问题描述】:

我正在使用 Prometheus 工具来监控我的 Kubernetes 集群。

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

【问题讨论】:

    标签: kubernetes prometheus prometheus-operator


    【解决方案1】:

    可以使用指标 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 的对这种情况无用的指标

    【讨论】:

    • 如果容器的内存使用量超过限制,最好的方法是什么?使用小于运算符而不是减法?
    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 2020-03-01
    • 2012-04-09
    • 1970-01-01
    • 2022-01-13
    • 2017-09-13
    • 2016-06-12
    • 2020-09-06
    相关资源
    最近更新 更多