要找出内存使用率大于80%的主机,你可以使用以下PromQL查询。这个查询会计算每个节点的内存使用率,然后筛选出使用率超过80%的节点:
(avg by(nodename) ((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)* on(instance) group_left(nodename)sum by(instance, nodename) (node_uname_info)) / avg by(nodename) (node_memory_MemTotal_bytes* on(instance) group_left(nodename)sum by(instance, nodename) (node_uname_info)) * 100
) > 80
要找出**内存使用率小于30%**的主机,只需将前面的查询条件从 > 80 改为 < 30 即可。以下是完整的 PromQL 查询:
(avg by(nodename) ((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)* on(instance) group_left(nodename)sum by(instance, nodename) (node_uname_info)) / avg by(nodename) (node_memory_MemTotal_bytes* on(instance) group_left(nodename)sum by(instance, nodename) (node_uname_info)) * 100
) < 30
100 - (avg by(nodename) (node_memory_MemAvailable_bytes* on(instance) group_left(nodename)sum by(instance, nodename) (node_uname_info)) / avg by(nodename) (node_memory_MemTotal_bytes* on(instance) group_left(nodename)sum by(instance, nodename) (node_uname_info)) * 100
)
100 - (
avg by(nodename) (
rate(node_cpu_seconds_total{mode="idle"}[5m])
* on(instance) group_left(nodename)
sum by(instance, nodename) (node_uname_info)
) * 100
)