• 容器promQL语法之内存指标


    容器-promQL语法之内存指标

     

    在容器内进行内存监控的常用指标包括

    1、 内存中的cache用量

    container_memory_cache

    2、 常驻的内存用量

    container_memory_rss

    3、 交换分区用量

    container_memory_swap

    4、 内存的总占用量

    container_memory_usage_bytes

          由于container_memory_usage_bytes包括container_memory_cache,所以在计算容器的实际内存占用时,是将container_memory_usage_bytes减去container_memory_cache统计的。

          内存指标都是仪表盘类型的数据,可以直接通过标签获取每个pod的内存指标

    5、获取内存用量的sql

    container_memory_usage_bytes{pod="kubernetes-dashboard-74d688b6bc-stl4c"}

    在监控k8s时,通过上面的查询条件会获取3条监控指标:sanbox容器内存、业务容器内存和整个pod的内存。可以追加过滤条件获取其中的某个指标

        容器过程中如果达到了上限,就会触发OOM事件。堆内存OOM的判断并不是通过container_memory_usage_bytes指标进行的。而是通过《container_memory_working_set_bytes{name!~"POD"}》指标进行的。所以通过 container_memory_working_set_bytes / kube_pod_container_resource_limits_memory_bytes获得内存使用率

    使用内存数
    sum(rate(container_memory_working_set_bytes{namespace!=""}[5m])) by (namespace,pod)
    
    总内存数
    container_memory_usage_bytes
    
    请求内存数
    kube_pod_container_resource_requests{resource="memory",namespace!=""}
    
    限制内存数
    sum(kube_pod_container_resource_limits{resource="memory",namespace!=""}) by (namespace,pod)
    
    
    内存占用率
    sum(rate(container_memory_working_set_bytes{namespace!=""}[5m])) by (namespace,pod) / sum(kube_pod_container_resource_limits{resource="memory",namespace!=""}) by (namespace,pod)
    
    
    1. container_spec_cpu_period

      当对容器进行 CPU 限制时,CFS 调度的时间窗口,又称容器 CPU 的时钟周期通常是 100,000 微秒

    2. container_spec_cpu_quota

      是指容器的使用 CPU 时间周期总量,如果 quota 设置的是 700,000,就代表该容器可用的 CPU 时间是 7*100,000 微秒,通常对应 kubernetes 的 resource.cpu.limits 的值

    3. container_spec_cpu_share

      是指 container 使用分配主机 CPU 相对值,比如 share 设置的是 500m,代表窗口启动时向主机节点申请 0.5 个 CPU,也就是 50,000 微秒,通常对应 kubernetes 的 resource.cpu.requests 的值

    4. container_cpu_usage_seconds_total

      统计容器的 CPU 在一秒内消耗使用率,应注意的是该 container 所有的 CORE

    5. container_cpu_system_seconds_total

      统计容器内核态在一秒时间内消耗的 CPU

    6. container_cpu_user_seconds_total

      统计容器用户态在一秒时间内消耗的 CPU

    container_cpu_usage_seconds_total是container累计使用的CPU时间,用它除以CPU的总时间,就得到了容器的CPU使用率。


    Pod 在1s内累计使用的CPU时间为:
    sum(rate(container_cpu_usage_seconds_total{image!=""}[1m])) by (pod_name, namespace)
    
     container_spec_cpu_quota是容器的CPU配额,它的值是:为容器指定的CPU个数*100000。
    故,Pod在1s内CPU的总时间为:Pod的CPU核数 * 1s:
    
    
    (sum(container_spec_cpu_quota{image!=""}/100000) by (pod_name, namespace))


    将上面两个公式的结果相除,就得到了容器的CPU使用率:
    
    
    sum(rate(container_cpu_usage_seconds_total{image!=""}[1m])) by (pod_name, namespace) / (sum(container_spec_cpu_quota{image!=""}/100000) by (pod_name, namespace)) * 100
    
     

    摘自:

    https://www.cnblogs.com/suyj/p/15621392.html

    https://www.jianshu.com/p/8b4cb143d174

  • 相关阅读:
    dev、test和prod是什么意思?
    构建项目时依赖库下载不下来的解决
    自定义view规范步骤步骤
    【转】MIUI8以及ViVO X9上在Android Studio运行出错集及其解决方案
    Ubuntu 16.04使用git
    Android中WebView与H5的交互,Native与JS方法互调
    [转] Fragment——startActivityForResult后onActivityResult无反应之问题总结
    解决运行github项目build时间长问题
    SVN回滚至某个版本
    【算法】种花问题
  • 原文地址:https://www.cnblogs.com/fengjian2016/p/16423295.html
Copyright © 2020-2023  润新知