如何通过Prometheus(PromQL)获取Linux和Windows节点的平均资源使用率
通过PromQL获取Linux和Windows节点资源平均使用率
CPU平均使用率
Linux节点
基于node_cpu_seconds_total指标计算,排除空闲时间占比得到使用率:
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
说明:用irate计算1分钟内的空闲CPU速率,取实例维度的平均值后,用100减去空闲占比得到实际使用率。
Windows节点
基于windows_cpu_time_total指标计算:
100 - (avg by (instance) (irate(windows_cpu_time_total{mode="idle"}[1m])) * 100)
说明:逻辑与Linux一致,适配Windows节点的指标命名。
内存平均使用率
Linux节点
用可用内存占总内存的比例反向计算:
100 * (1 - (avg by (instance) (node_memory_MemAvailable_bytes) / avg by (instance) (node_memory_MemTotal_bytes)))
说明:MemAvailable_bytes是系统可立即分配给新进程的内存,比MemFree_bytes更能反映实际可用内存。
Windows节点
基于物理内存总量和空闲内存计算:
100 * (1 - (avg by (instance) (windows_os_physical_memory_free_bytes) / avg by (instance) (windows_cs_physical_memory_bytes)))
说明:windows_cs_physical_memory_bytes是物理内存总量,windows_os_physical_memory_free_bytes是空闲物理内存。
磁盘平均使用率
Linux节点
计算挂载点的可用空间占比,排除临时文件系统:
100 * (1 - (avg by (instance, mountpoint) (node_filesystem_avail_bytes{fstype!~"tmpfs|rootfs|overlay"})) / avg by (instance, mountpoint) (node_filesystem_size_bytes{fstype!~"tmpfs|rootfs|overlay"}))
说明:通过fstype过滤掉tmpfs等临时文件系统,按实例和挂载点维度聚合。
Windows节点
计算逻辑磁盘的可用空间占比,排除系统隐藏卷:
100 * (1 - (avg by (instance, volume) (windows_logical_disk_free_bytes{volume!~"\\\\?\\Volume.*|C:\\\\Windows\\\\system32"})) / avg by (instance, volume) (windows_logical_disk_size_bytes{volume!~"\\\\?\\Volume.*|C:\\\\Windows\\\\system32"}))
说明:通过volume过滤掉系统保留卷,按实例和磁盘卷维度聚合。
内容的提问来源于stack exchange,提问作者Surya Subit Datta
相关产品推荐
相关产品推荐

