• 【Prometheus】Node Exporter常用查询PromQL 语句大总结


    计算集群cpu平均使用率

    通过计算cpu空闲使用率 用1-空闲率 则为cpu使用率

    • node_cpu_seconds 表示机器在非重启情况下开机到现在所使用的时间(s)

    • 由于cpu资源会不断的被机器利用,其中对应了很多模式,包括内核进程、用户进程、io等待、中断等使用模式

    • 可以通过查询node_cpu_seconds 指标来看各种对应的模式

    • cpu空闲对应的模式:model=“idle”:空闲的cpu时间

    查询cpu空闲使用率:

    • 使用irate计算时间窗口 [5m] 内 cpu空闲(model=“idle”)的增长率
      irate: 内置函数 求时间窗口内指标的增长率 ,它不同于rate的是,它不会造成长尾问题,敏感性更高。

    irate(node_cpu_seconds_total{mode="idle"}[5m])

    输出tag:instance 并使用avg求每个机器cpu空闲平均值

    avg:聚合函数 求平均值

    avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])

    查询cpu平均使用率

    通过1-cpu空闲率得出每个机器的平均使用率

    1- (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])))

    转换为 100%

    100 - (avg by (instance) (irate(node_cpu{instance="xxx", mode="idle"}[5m])) * 100)
    
    • 1

    查询集群所有机器的cpu平均使用率
    avg( 1 - (avg(irate(node_cpu_seconds_total{mode="idle"}[1m]))))

    CPU各mode占比率

    avg by (instance, mode) (irate(node_cpu{instance="xxx"}[5m])) * 100
    
    • 1

    机器平均负载

    node_load1{instance="xxx"} // 1分钟负载
    node_load5{instance="xxx"} // 5分钟负载
    node_load15{instance="xxx"} // 15分钟负载
    
    • 1
    • 2
    • 3

    内存使用率

    100-(node_memory_MemFree_bytes{instance="192.168.119.69:9796"}+node_memory_Cached_bytes{instance="192.168.119.69:9796"}+node_memory_Buffers_bytes{instance="192.168.119.69:9796"})/node_memory_MemTotal_bytes{instance="192.168.119.69:9796"}*100
    
    • 1
    (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes * 100
    
    • 1

    磁盘使用率

    100 - node_filesystem_free_bytes{mountpoint = "/",instance="xxx",fstype!~"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|udev|none|devpts|sysfs|debugfs|fuse.*"} /
               node_filesystem_size_bytes{mountpoint = "/",instance="xxx",fstype!~"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|udev|none|devpts|sysfs|debugfs|fuse.*"} * 100
    
    • 1
    • 2

    或者你也可以直接使用 {fstype=“xxx”} 来指定想查看的磁盘信息

    网络IO

    // 上行带宽
    sum by (instance) (irate(node_network_receive_bytes_total{instance="xxx",device!~"bond.*?|lo"}[5m])/128)
    
    // 下行带宽
    sum by (instance) (irate(node_network_transmit_bytes_total{instance="xxx",device!~"bond.*?|lo"}[5m])/128)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    网卡出入包

    // 入包量
    sum by (instance) (rate(node_network_receive_bytes_total{instance="xxx",device!="lo"}[5m]))
    
    // 出包量
    sum by (instance) (rate(node_network_transmit_bytes_total{instance="xxx",device!="lo"}[5m]))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    IOPS读写

    写
    irate(node_disk_writes_completed_total{instance=~"^192.168.119.68:9796",device=~"[a-z]*[a-z]"}[5m])
       
       
        //IOPS读  查询条件
           String IOPSRead = "sum without(device)  (node_disk_reads_completed_total{instance=~\"^" + instance + "\"})";
    node_disk_reads_completed_total/node_disk_read_time_seconds_total
    
    读
    irate(node_disk_reads_completed_total{instance=~"^192.168.119.68:9796",device=~"[a-z]*[a-z]"}[5m])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    每秒api请求数

    sum by(component) (irate(apiserver_request_total[5m]))
    
    • 1

    api平均延时

    avg by(component)((sum by(component)(apiserver_request_duration_seconds_sum))/(sum by(component)(apiserver_request_duration_seconds_count)))
    
    • 1

    调度器调度次数

    sum  (scheduler_schedule_attempts_total)
    
    • 1

    调度失败的pod

    sum (scheduler_schedule_attempts_total{result!="scheduled"})
    
    • 1

    集群CPU使用率

    1- (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])))
    
    • 1

    集群内存使用率

    100 * (1 - sum(node_memory_MemAvailable_bytes) / sum(node_memory_MemTotal_bytes))
    
    • 1

    集群磁盘使用率

    (sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
        - sum(node_filesystem_free_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
       ) / sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"}) * 100 
    
    • 1
    • 2
    • 3

    集群总cpu

    sum (machine_cpu_cores{node=~"^.*$"})
    
    • 1

    集群已经使用的cpu

    (1 - (avg(irate(node_cpu_seconds_total{mode="idle",node=~"^.*$"}[5m])))) * sum(machine_cpu_cores{node=~"^.*$"})
    
    • 1

    集群总内存

    sum (machine_memory_bytes{node=~"^.*$"})
    
    • 1

    集群已使用内存

    sum(node_memory_MemTotal_bytes{device!~"rootfs|HarddiskVolume.+",node =~"^.*$"}) - sum(node_memory_MemAvailable_bytes{device!~"rootfs|HarddiskVolume.+",node =~"^.*$"})
    
    • 1

    集群总磁盘

    sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
    
    • 1

    集群已使用磁盘

    sum(node_filesystem_size_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
        - sum(node_filesystem_free_bytes{device!~"rootfs|HarddiskVolume.+",node=~"^.*$"})
    
    • 1
    • 2

    集群总pod

    sum (kube_node_status_capacity_pods)
       
    不用--->  sum(kube_pod_status_phase{namespace=~".*", phase=~".*"})
    
    • 1
    • 2
    • 3

    集群运行pod

    sum(kubelet_running_pod_count)
       
    sum(kube_pod_status_phase{namespace=~".*", phase="Running"})
    
    • 1
    • 2
    • 3
  • 相关阅读:
    『Halcon与C#混合编程』002_读取图像、显示图像
    AUTOCAD——形位公差如何标注、CAD打断于点的操作
    【Pytorch Lighting】第 8 章:自监督学习
    华为、小米OV折叠屏市场再厮杀
    企业内部聊天软件Riot部署
    如何向客户推广 API 商品数据接口,如何跟进项目和程序员对接?
    动态规划:06不同路径II
    Vim 系列 (一) Using Marks in Vim
    linux安装Redis
    【UE5.1 角色练习】11-坐骑——Part1(控制大象移动)
  • 原文地址:https://blog.csdn.net/agonie201218/article/details/126232438